From: Johannes Schindelin Date: Mon, 19 Feb 2007 02:14:59 +0000 (+0100) Subject: rev-list --max-age, --max-count: support --boundary X-Git-Tag: v1.5.1-rc1~136^2 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=c4025103faf02a1b457b945cf5e4e12c97fa72d7;p=git.git rev-list --max-age, --max-count: support --boundary Now, when saying --max-age=, or --max-count=, together with --boundary, rev-list prints the boundary commits, i.e. the commits which are _just_ not shown without --boundary, i.e. their children are, but they aren't. Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- diff --git a/revision.c b/revision.c index 15bdaf609..4f298bacc 100644 --- a/revision.c +++ b/revision.c @@ -1229,9 +1229,15 @@ static struct commit *get_revision_1(struct rev_info *revs) */ if (!revs->limited) { if (revs->max_age != -1 && - (commit->date < revs->max_age)) - continue; - add_parents_to_list(revs, commit, &revs->commits); + (commit->date < revs->max_age)) { + if (revs->boundary) + commit->object.flags |= + BOUNDARY_SHOW | BOUNDARY; + else + continue; + } else + add_parents_to_list(revs, commit, + &revs->commits); } if (commit->object.flags & SHOWN) continue; @@ -1298,7 +1304,18 @@ struct commit *get_revision(struct rev_info *revs) case -1: break; case 0: - return NULL; + if (revs->boundary) { + struct commit_list *list = revs->commits; + while (list) { + list->item->object.flags |= + BOUNDARY_SHOW | BOUNDARY; + list = list->next; + } + /* all remaining commits are boundary commits */ + revs->max_count = -1; + revs->limited = 1; + } else + return NULL; default: revs->max_count--; }