Browse Source

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>
maint
Matthieu Moy 14 years ago committed by Junio C Hamano
parent
commit
251df09be3
  1. 8
      builtin/log.c
  2. 3
      t/t4013-diff-various.sh
  3. 2
      t/t4013/diff.log_-SF_master_--max-count=0
  4. 7
      t/t4013/diff.log_-SF_master_--max-count=1
  5. 7
      t/t4013/diff.log_-SF_master_--max-count=2

8
builtin/log.c

@ -263,7 +263,13 @@ static int cmd_log_walk(struct rev_info *rev) @@ -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);

3
t/t4013-diff-various.sh

@ -210,6 +210,9 @@ log -m -p master @@ -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

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
$ git log -SF master --max-count=0
$

7
t/t4013/diff.log_-SF_master_--max-count=1

@ -0,0 +1,7 @@ @@ -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

@ -0,0 +1,7 @@ @@ -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…
Cancel
Save