aboutsummaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorMatthieu Moy <Matthieu.Moy@imag.fr>2011-03-09 21:52:15 +0100
committerJunio C Hamano <gitster@pobox.com>2011-03-09 14:28:24 -0800
commit251df09be3af658404f5f5f670a013d5806645d4 (patch)
tree01da419ad405179afd0765bcd77a89390a8e055c /builtin
parentd0f7dcbf424e1739437ffe477d87088ca6cb3432 (diff)
downloadgit-251df09be3af658404f5f5f670a013d5806645d4.tar.gz
git-251df09be3af658404f5f5f670a013d5806645d4.tar.xz
log: fix --max-count when used together with -S or -G
The --max-count limit is implemented by counting revisions in get_revision(), but the -S and -G take effect later when running diff. Hence "--max-count=10 -Sfoo" meant "examine the 10 first revisions, and out of them, show only those changing the occurences of foo", not "show 10 revisions changing the occurences of foo". In case the commit isn't actually shown, cancel the decrement of max_count. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/log.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/builtin/log.c b/builtin/log.c
index d8c6c28d2..2b82272ea 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -263,7 +263,13 @@ static int cmd_log_walk(struct rev_info *rev)
* retain that state information if replacing rev->diffopt in this loop
*/
while ((commit = get_revision(rev)) != NULL) {
- log_tree_commit(rev, commit);
+ if (!log_tree_commit(rev, commit) &&
+ rev->max_count >= 0)
+ /*
+ * We decremented max_count in get_revision,
+ * but we didn't actually show the commit.
+ */
+ rev->max_count++;
if (!rev->reflog_info) {
/* we allow cycles in reflog ancestry */
free(commit->buffer);