Browse files

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>
  • Loading branch information...
1 parent 78c2cff commit f8f9c73c7d835ec1e5b665c66623aed49fcd4888 Junio C Hamano committed Jan 7, 2006
Showing with 17 additions and 1 deletion.
  1. +13 −0 commit.c
  2. +2 −0 commit.h
  3. +2 −1 describe.c
View
13 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
*/
View
2 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);
/*
View
3 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)

0 comments on commit f8f9c73

Please sign in to comment.