зеркало из https://github.com/microsoft/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 <junkio@cox.net>
This commit is contained in:
Родитель
78c2cff61f
Коммит
f8f9c73c7d
13
commit.c
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
|
||||
*/
|
||||
|
|
2
commit.h
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);
|
||||
|
||||
/*
|
||||
|
|
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче