Skip to content

Commit

Permalink
log: fix --max-count when used together with -S or -G
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Matthieu Moy authored and Junio C Hamano committed Mar 9, 2011
1 parent d0f7dcb commit 251df09
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 1 deletion.
8 changes: 7 additions & 1 deletion builtin/log.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
3 changes: 3 additions & 0 deletions t/t4013-diff-various.sh
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,9 @@ log -m -p master
log -SF master
log -S F master
log -SF -p master
log -SF master --max-count=0
log -SF master --max-count=1
log -SF master --max-count=2
log -GF master
log -GF -p master
log -GF -p --pickaxe-all master
Expand Down
2 changes: 2 additions & 0 deletions t/t4013/diff.log_-SF_master_--max-count=0
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
$ git log -SF master --max-count=0
$
7 changes: 7 additions & 0 deletions t/t4013/diff.log_-SF_master_--max-count=1
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
$ git log -SF master --max-count=1
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000

Third
$
7 changes: 7 additions & 0 deletions t/t4013/diff.log_-SF_master_--max-count=2
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
$ git log -SF master --max-count=2
commit 9a6d4949b6b76956d9d5e26f2791ec2ceff5fdc0
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:02:00 2006 +0000

Third
$

0 comments on commit 251df09

Please sign in to comment.