diff: the -w option breaks --exit-code for --raw and other output modes
The output from "--raw", "--name-status", and "--name-only" modes in "git diff" does depend on and does not reflect how certain different contents are considered equal, unlike "--patch" and "--stat" output modes do, when used with options like "-w" (another way of thinking about it is that it is not like we recompute the hash of the blob after removing all whitespaces to show "git diff --raw -w" output). But the fact that "--raw" and friends ignore "-w" is not a good excuse for "diff --raw -w --exit-code" to also ignore the request to report the differences with its exit status. When run without "-w", "git diff --exit-code --raw" does report with its exit status the differences as requested, and we should do the same when run with "-w", too. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
6
diff.c
6
diff.c
@@ -4744,6 +4744,10 @@ void diff_setup_done(struct diff_options *options)
|
||||
else
|
||||
options->prefix_length = 0;
|
||||
|
||||
/*
|
||||
* --name-only, --name-status, --checkdiff, and -s
|
||||
* turn other output format off.
|
||||
*/
|
||||
if (options->output_format & (DIFF_FORMAT_NAME |
|
||||
DIFF_FORMAT_NAME_STATUS |
|
||||
DIFF_FORMAT_CHECKDIFF |
|
||||
@@ -6072,6 +6076,8 @@ static void flush_one_pair(struct diff_filepair *p, struct diff_options *opt)
|
||||
fprintf(opt->file, "%s", diff_line_prefix(opt));
|
||||
write_name_quoted(name_a, opt->file, opt->line_termination);
|
||||
}
|
||||
|
||||
opt->found_changes = 1;
|
||||
}
|
||||
|
||||
static void show_file_mode_name(struct diff_options *opt, const char *newdelete, struct diff_filespec *fs)
|
||||
|
||||
Reference in New Issue
Block a user