1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-09 11:26:09 +02:00

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>
This commit is contained in:
Junio C Hamano 2020-12-18 15:15:18 -08:00
commit 59fcf746f5
2 changed files with 26 additions and 1 deletions

3
diff.c
View File

@ -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;

View File

@ -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 &&