From f8f9c73c7d835ec1e5b665c66623aed49fcd4888 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 7 Jan 2006 18:52:42 -0800 Subject: [PATCH] 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 --- commit.c | 13 +++++++++++++ commit.h | 2 ++ describe.c | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/commit.c b/commit.c index edd4dedcdd..e9a29caa27 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 6738a696d7..9c4a244bd9 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 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)