提交 181dc776 编写于 作者: J Junio C Hamano

describe: omit clearing marks on the last one.

When describing more than one, we need to clear the commit marks
before handling the next one, but most of the time we are
running it for only one commit, and in such a case this clearing
phase is totally unnecessary.
Signed-off-by: NJunio C Hamano <junkio@cox.net>
上级 7cb038a6
......@@ -359,8 +359,10 @@ void clear_commit_marks(struct commit *commit, unsigned int mark)
parents = commit->parents;
commit->object.flags &= ~mark;
while (parents) {
if (parents->item && parents->item->object.parsed)
clear_commit_marks(parents->item, mark);
struct commit *parent = parents->item;
if (parent && parent->object.parsed &&
(parent->object.flags & mark))
clear_commit_marks(parent, mark);
parents = parents->next;
}
}
......
......@@ -98,7 +98,7 @@ static int compare_names(const void *_a, const void *_b)
return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
}
static void describe(struct commit *cmit)
static void describe(struct commit *cmit, int last_one)
{
struct commit_list *list;
static int initialized = 0;
......@@ -124,7 +124,8 @@ static void describe(struct commit *cmit)
if (n) {
printf("%s-g%s\n", n->path,
find_unique_abbrev(cmit->object.sha1, abbrev));
clear_commit_marks(cmit, SEEN);
if (!last_one)
clear_commit_marks(cmit, SEEN);
return;
}
}
......@@ -159,7 +160,7 @@ int main(int argc, char **argv)
cmit = lookup_commit_reference(sha1);
if (!cmit)
usage(describe_usage);
describe(cmit);
describe(cmit, i == argc - 1);
}
return 0;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册