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>
This commit is contained in:
parent
d0f7dcbf42
commit
251df09be3
@ -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);
|
||||
|
@ -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
|
||||
|
2
t/t4013/diff.log_-SF_master_--max-count=0
Normal file
2
t/t4013/diff.log_-SF_master_--max-count=0
Normal file
@ -0,0 +1,2 @@
|
||||
$ git log -SF master --max-count=0
|
||||
$
|
7
t/t4013/diff.log_-SF_master_--max-count=1
Normal file
7
t/t4013/diff.log_-SF_master_--max-count=1
Normal file
@ -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
t/t4013/diff.log_-SF_master_--max-count=2
Normal file
7
t/t4013/diff.log_-SF_master_--max-count=2
Normal file
@ -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
|
||||
$
|
Loading…
Reference in New Issue
Block a user