From: Junio C Hamano Date: Sun, 8 Jan 2006 02:52:42 +0000 (-0800) Subject: describe: allow more than one revs to be named. X-Git-Tag: v1.1.0~5 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=f8f9c73c7d835ec1e5b665c66623aed49fcd4888;p=git.git 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 --- diff --git a/commit.c b/commit.c index edd4dedc..e9a29caa 100644 --- a/commit.c +++ b/commit.c @@ -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 */ diff --git a/commit.h b/commit.h index 6738a696..9c4a244b 100644 --- a/commit.h +++ b/commit.h @@ -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 84d96b5b..00fa02ad 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)