aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2025-07-14 11:19:24 -0700
committerJunio C Hamano <gitster@pobox.com>2025-07-14 11:19:24 -0700
commit50d9c342b401d8040cfc484774b38d12474bbe8e (patch)
tree51a1f80056ce0cfd9dec62608bb9cd290b9b22da
parentf96878e5d32ac78820401e7061ac5090deeb94ee (diff)
parent375ac087c5c5d17f941ed235c0bf434870eba8e7 (diff)
downloadgit-50d9c342b401d8040cfc484774b38d12474bbe8e.tar.gz
Merge branch 'jk/all-negative-diff-filter-fix'
A diff-filter with negative-only specification like "git log --diff-filter=d" did not trigger correctly, which has been fixed. * jk/all-negative-diff-filter-fix: setup_revisions(): turn on diffs for all-negative diff filter
-rw-r--r--revision.c2
-rwxr-xr-xt/t4202-log.sh6
2 files changed, 7 insertions, 1 deletions
diff --git a/revision.c b/revision.c
index afee111196..9892d08748 100644
--- a/revision.c
+++ b/revision.c
@@ -3112,7 +3112,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
/* Pickaxe, diff-filter and rename following need diffs */
if ((revs->diffopt.pickaxe_opts & DIFF_PICKAXE_KINDS_MASK) ||
- revs->diffopt.filter ||
+ revs->diffopt.filter || revs->diffopt.filter_not ||
revs->diffopt.flags.follow_renames)
revs->diff = 1;
diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index 4a6c4dfbf4..05cee9e41b 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -134,6 +134,12 @@ test_expect_success 'diff-filter=D' '
'
+test_expect_success 'all-negative filter' '
+ git log --no-renames --format=%s --diff-filter=d HEAD >actual &&
+ printf "%s\n" fifth fourth third second initial >expect &&
+ test_cmp expect actual
+'
+
test_expect_success 'diff-filter=R' '
git log -M --pretty="format:%s" --diff-filter=R HEAD >actual &&