diff options
author | Junio C Hamano <gitster@pobox.com> | 2024-02-06 14:31:20 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-02-06 14:31:21 -0800 |
commit | 92e69dfb66fa5c760e2d1f76c8a21cdb6faacaee (patch) | |
tree | b61fcfdac9f500306608721c8958bda767b6d281 | |
parent | 76bb1896de15c8d358e5adad298c90cafa98aaf5 (diff) | |
parent | 85a9a63c9268b18b24f25f6a14d6ae9966c3566d (diff) | |
download | git-92e69dfb66fa5c760e2d1f76c8a21cdb6faacaee.tar.gz |
Merge branch 'jk/diff-external-with-no-index'
"git diff --no-index file1 file2" segfaulted while invoking the
external diff driver, which has been corrected.
* jk/diff-external-with-no-index:
diff: handle NULL meta-info when spawning external diff
-rw-r--r-- | diff.c | 3 | ||||
-rwxr-xr-x | t/t4053-diff-no-index.sh | 12 |
2 files changed, 14 insertions, 1 deletions
@@ -4384,7 +4384,8 @@ static void run_external_diff(const char *pgm, add_external_diff_name(o->repo, &cmd.args, two); if (other) { strvec_push(&cmd.args, other); - strvec_push(&cmd.args, xfrm_msg); + if (xfrm_msg) + strvec_push(&cmd.args, xfrm_msg); } } diff --git a/t/t4053-diff-no-index.sh b/t/t4053-diff-no-index.sh index 5ce345d309..651ec77660 100755 --- a/t/t4053-diff-no-index.sh +++ b/t/t4053-diff-no-index.sh @@ -205,6 +205,18 @@ test_expect_success POSIXPERM,SYMLINKS 'diff --no-index normalizes: mode not lik test_cmp expected actual ' +test_expect_success POSIXPERM 'external diff with mode-only change' ' + echo content >not-executable && + echo content >executable && + chmod +x executable && + echo executable executable $(test_oid zero) 100755 \ + not-executable $(test_oid zero) 100644 not-executable \ + >expect && + test_expect_code 1 git -c diff.external=echo diff \ + --no-index executable not-executable >actual && + test_cmp expect actual +' + test_expect_success "diff --no-index treats '-' as stdin" ' cat >expect <<-EOF && diff --git a/- b/a/1 |