diff options
author | Junio C Hamano <junkio@cox.net> | 2006-01-07 18:52:42 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-01-07 21:43:01 -0800 |
commit | f8f9c73c7d835ec1e5b665c66623aed49fcd4888 (patch) | |
tree | 64fc23b181b3c0e9b5a6edaa8c65a0035c857c63 | |
parent | 78c2cff61f87d43c1f4ef5a03547f093c4c6e0c9 (diff) | |
download | git-f8f9c73c7d835ec1e5b665c66623aed49fcd4888.tar.gz |
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>
-rw-r--r-- | commit.c | 13 | ||||
-rw-r--r-- | commit.h | 2 | ||||
-rw-r--r-- | describe.c | 3 |
3 files changed, 17 insertions, 1 deletions
@@ -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 */ @@ -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); /* diff --git a/describe.c b/describe.c index 84d96b5b82..00fa02adcc 100644 --- a/describe.c +++ b/describe.c @@ -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) |