summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2020-12-18 15:15:18 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-12-18 15:15:18 -0800
commit59fcf746f5a6253b3c0a84a94ecd5cf1add56e3a (patch)
treef2eca2aa27d7014846d4d0381ad1306c48c5b964
parentMerge branch 'es/perf-export-fix' (diff)
parentdiff: correct interaction between --exit-code and -I<pattern> (diff)
downloadtgif-59fcf746f5a6253b3c0a84a94ecd5cf1add56e3a.tar.xz
Merge branch 'jc/diff-I-status-fix'
"git diff -I<pattern> -exit-code" should exit with 0 status when all the changes match the ignored pattern, but it didn't. * jc/diff-I-status-fix: diff: correct interaction between --exit-code and -I<pattern>
-rw-r--r--diff.c3
-rwxr-xr-xt/t4015-diff-whitespace.sh24
2 files changed, 26 insertions, 1 deletions
diff --git a/diff.c b/diff.c
index 643f4f3f6d..2253ec8802 100644
--- a/diff.c
+++ b/diff.c
@@ -4634,7 +4634,8 @@ void diff_setup_done(struct diff_options *options)
* inside contents.
*/
- if ((options->xdl_opts & XDF_WHITESPACE_FLAGS))
+ if ((options->xdl_opts & XDF_WHITESPACE_FLAGS) ||
+ options->ignore_regex_nr)
options->flags.diff_from_contents = 1;
else
options->flags.diff_from_contents = 0;
diff --git a/t/t4015-diff-whitespace.sh b/t/t4015-diff-whitespace.sh
index 47f0e2889d..8c574221b2 100755
--- a/t/t4015-diff-whitespace.sh
+++ b/t/t4015-diff-whitespace.sh
@@ -567,6 +567,30 @@ test_expect_success '--check and --quiet are not exclusive' '
git diff --check --quiet
'
+test_expect_success '-w and --exit-code interact sensibly' '
+ test_when_finished "git checkout x" &&
+ {
+ test_seq 15 &&
+ echo " 16"
+ } >x &&
+ test_must_fail git diff --exit-code &&
+ git diff -w >actual &&
+ test_must_be_empty actual &&
+ git diff -w --exit-code
+'
+
+test_expect_success '-I and --exit-code interact sensibly' '
+ test_when_finished "git checkout x" &&
+ {
+ test_seq 15 &&
+ echo " 16"
+ } >x &&
+ test_must_fail git diff --exit-code &&
+ git diff -I. >actual &&
+ test_must_be_empty actual &&
+ git diff -I. --exit-code
+'
+
test_expect_success 'check staged with no whitespace errors' '
echo "foo();" >x &&
git add x &&