diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-09-18 20:18:37 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-09-18 20:18:37 -0700 |
commit | b805ef08e691299478b0d0c843eeab3f066c5872 (patch) | |
tree | 0bd1e11f4f7239bbb54c8b771edbafde80b8ecf6 /revision.c | |
parent | cb2c7daf52906764d3c8f96cf358bdc7a2c7995a (diff) | |
parent | 9d13dec5499ec31a93dd22db9b0c971133a10613 (diff) | |
download | git-b805ef08e691299478b0d0c843eeab3f066c5872.tar.gz |
Merge branch 'tr/rev-list-reverse'
* tr/rev-list-reverse:
t6013: replace use of 'tac' with equivalent Perl
rev-list: fix --reverse interaction with --parents
Diffstat (limited to 'revision.c')
-rw-r--r-- | revision.c | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/revision.c b/revision.c index 499f0e0225..2f646deab0 100644 --- a/revision.c +++ b/revision.c @@ -1793,26 +1793,6 @@ static struct commit *get_revision_internal(struct rev_info *revs) return c; } - if (revs->reverse) { - int limit = -1; - - if (0 <= revs->max_count) { - limit = revs->max_count; - if (0 < revs->skip_count) - limit += revs->skip_count; - } - l = NULL; - while ((c = get_revision_1(revs))) { - commit_list_insert(c, &l); - if ((0 < limit) && !--limit) - break; - } - revs->commits = l; - revs->reverse = 0; - revs->max_count = -1; - c = NULL; - } - /* * Now pick up what they want to give us */ @@ -1885,7 +1865,23 @@ static struct commit *get_revision_internal(struct rev_info *revs) struct commit *get_revision(struct rev_info *revs) { - struct commit *c = get_revision_internal(revs); + struct commit *c; + struct commit_list *reversed; + + if (revs->reverse) { + reversed = NULL; + while ((c = get_revision_internal(revs))) { + commit_list_insert(c, &reversed); + } + revs->commits = reversed; + revs->reverse = 0; + revs->reverse_output_stage = 1; + } + + if (revs->reverse_output_stage) + return pop_commit(&revs->commits); + + c = get_revision_internal(revs); if (c && revs->graph) graph_update(revs->graph, c); return c; |