diff: correct interaction between --exit-code and -I<pattern>

Just like "git diff -w --exit-code" should exit with 0 when ignoring
whitespace differences results in no changes shown, if ignoring
certain changes with "git diff -I<pattern> --exit-code" result in an
empty patch, we should exit with 0.

The test suite did not cover the interaction between "--exit-code"
and "-w"; add one while adding a new test for "--exit-code" + "-I".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano
2020-12-16 17:27:13 -08:00
parent 296d4a94e7
commit 50f0439490
2 changed files with 26 additions and 1 deletions

3
diff.c
View File

@ -4602,7 +4602,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;