From: Linus Torvalds Date: Thu, 2 Jun 2005 16:25:44 +0000 (-0700) Subject: git-rev-list: split out commit limiting from main() too. X-Git-Tag: v0.99~384 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=3b42a63cb5845ef1c818f6b00e693c61469ee966;p=git.git git-rev-list: split out commit limiting from main() too. Ok, now I'm happier. --- diff --git a/rev-list.c b/rev-list.c index 8775b6558..56dd814c0 100644 --- a/rev-list.c +++ b/rev-list.c @@ -84,6 +84,25 @@ static int everybody_uninteresting(struct commit_list *list) return 1; } +struct commit_list *limit_list(struct commit_list *list, struct commit *end) +{ + struct commit_list *newlist = NULL; + struct commit_list **p = &newlist; + do { + struct commit *commit = pop_most_recent_commit(&list, SEEN); + struct object *obj = &commit->object; + + if (commit == end || (obj->flags & UNINTERESTING)) { + mark_parents_uninteresting(commit); + if (everybody_uninteresting(list)) + break; + continue; + } + p = &commit_list_insert(commit, p)->next; + } while (list); + return newlist; +} + int main(int argc, char **argv) { int nr_sha; @@ -144,23 +163,8 @@ int main(int argc, char **argv) } commit_list_insert(commit, &list); - if (end) { - struct commit_list *newlist = NULL; - struct commit_list **p = &newlist; - do { - struct commit *commit = pop_most_recent_commit(&list, SEEN); - struct object *obj = &commit->object; - - if (commit == end || (obj->flags & UNINTERESTING)) { - mark_parents_uninteresting(commit); - if (everybody_uninteresting(list)) - break; - continue; - } - p = &commit_list_insert(commit, p)->next; - } while (list); - list = newlist; - } + if (end) + list = limit_list(list, end); show_commit_list(list); return 0;