Michael Spang
2010-01-27 20:03:20 UTC
Using --max-count with --reverse currently outputs the last N commits
in the final output rather than the first N commits. We want to
truncate the reversed list after the first few commits, rather than
truncating the initial list and reversing that.
Signed-off-by: Michael Spang <***@google.com>
---
revision.c | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/revision.c b/revision.c
index f54d43f..62135e0 100644
--- a/revision.c
+++ b/revision.c
@@ -1993,7 +1993,8 @@ static struct commit *get_revision_internal(struct rev_info *revs)
c = NULL;
break;
default:
- revs->max_count--;
+ if (!revs->reverse)
+ revs->max_count--;
}
if (c)
@@ -2055,8 +2056,21 @@ struct commit *get_revision(struct rev_info *revs)
revs->reverse_output_stage = 1;
}
- if (revs->reverse_output_stage)
- return pop_commit(&revs->commits);
+ if (revs->reverse_output_stage) {
+ c = pop_commit(&revs->commits);
+
+ switch (revs->max_count) {
+ case -1:
+ break;
+ case 0:
+ c = NULL;
+ break;
+ default:
+ revs->max_count--;
+ }
+
+ return c;
+ }
c = get_revision_internal(revs);
if (c && revs->graph)
in the final output rather than the first N commits. We want to
truncate the reversed list after the first few commits, rather than
truncating the initial list and reversing that.
Signed-off-by: Michael Spang <***@google.com>
---
revision.c | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/revision.c b/revision.c
index f54d43f..62135e0 100644
--- a/revision.c
+++ b/revision.c
@@ -1993,7 +1993,8 @@ static struct commit *get_revision_internal(struct rev_info *revs)
c = NULL;
break;
default:
- revs->max_count--;
+ if (!revs->reverse)
+ revs->max_count--;
}
if (c)
@@ -2055,8 +2056,21 @@ struct commit *get_revision(struct rev_info *revs)
revs->reverse_output_stage = 1;
}
- if (revs->reverse_output_stage)
- return pop_commit(&revs->commits);
+ if (revs->reverse_output_stage) {
+ c = pop_commit(&revs->commits);
+
+ switch (revs->max_count) {
+ case -1:
+ break;
+ case 0:
+ c = NULL;
+ break;
+ default:
+ revs->max_count--;
+ }
+
+ return c;
+ }
c = get_revision_internal(revs);
if (c && revs->graph)
--
1.6.6
1.6.6