describe: allow more than one revs to be named.

The main loop was prepared to take more than one revs, but the actual
naming logic wad not (it used pop_most_recent_commit while forgetting
that the commit marks stay after it's done).

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-01-07 18:52:42 -08:00
parent 78c2cff61f
commit f8f9c73c7d
3 changed files with 17 additions and 1 deletions

View File

@ -352,6 +352,19 @@ struct commit *pop_most_recent_commit(struct commit_list **list,
return ret;
}
void clear_commit_marks(struct commit *commit, unsigned int mark)
{
struct commit_list *parents;
parents = commit->parents;
commit->object.flags &= ~mark;
while (parents) {
if (parents->item && parents->item->object.parsed)
clear_commit_marks(parents->item, mark);
parents = parents->next;
}
}
/*
* Generic support for pretty-printing the header
*/

View File

@ -58,6 +58,8 @@ struct commit *pop_most_recent_commit(struct commit_list **list,
struct commit *pop_commit(struct commit_list **stack);
void clear_commit_marks(struct commit *commit, unsigned int mark);
int count_parents(struct commit * commit);
/*

View File

@ -124,9 +124,10 @@ static void describe(struct commit *cmit)
if (n) {
printf("%s-g%s\n", n->path,
find_unique_abbrev(cmit->object.sha1, abbrev));
return;
break;
}
}
clear_commit_marks(cmit, SEEN);
}
int main(int argc, char **argv)