diff options
author | Matthieu Moy <Matthieu.Moy@imag.fr> | 2011-03-09 21:52:15 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-03-09 14:28:24 -0800 |
commit | 251df09be3af658404f5f5f670a013d5806645d4 (patch) | |
tree | 01da419ad405179afd0765bcd77a89390a8e055c /builtin | |
parent | SubmittingPatches: clarify the expected commit log description (diff) | |
download | tgif-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.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/builtin/log.c b/builtin/log.c index d8c6c28d2f..2b82272eac 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); |