[PATCH v1 5/7] diff: split --no-patch from -s
From: Felipe Contreras <hidden>
Date: 2023-05-12 08:03:59
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
It should silence only the --patch output, not all output. When --no-patch was introduced in d09cd15d19 (diff: allow --no-patch as synonym for -s, 2013-07-16), the idea was to have a more accessible shortcut to silence the output of `git show`. However, the interaction with other options was not considered, for example `--raw --no-patch`. The original intention remains, as `git show --no-patch` still produces the same: no output. Signed-off-by: Felipe Contreras <redacted> --- Documentation/diff-options.txt | 5 ++--- diff.c | 5 ++++- t/t4000-diff-format.sh | 7 ++++--- 3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 08ab86189a..ba04b8292a 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt@@ -21,7 +21,7 @@ endif::git-format-patch[] ifndef::git-format-patch[] -p:: -u:: ---patch:: +--[no-]patch:: Generate patch (see section titled ifdef::git-log[] <<generate_patch_text_with_p, "Generating patch text with -p">>).
@@ -34,9 +34,8 @@ ifdef::git-diff[] endif::git-diff[] -s:: ---no-patch:: Suppress diff output. Useful for commands like `git show` that - show the patch by default, or to cancel the effect of `--patch`. + show output by default. endif::git-format-patch[] ifdef::git-log[]
diff --git a/diff.c b/diff.c
index 4f4b1d7e13..45c860496f 100644
--- a/diff.c
+++ b/diff.c@@ -5493,9 +5493,12 @@ struct option *add_diff_options(const struct option *opts, OPT_BITOP('p', "patch", &options->output_format, N_("generate patch"), DIFF_FORMAT_PATCH, DIFF_FORMAT_DEFAULT | DIFF_FORMAT_NO_OUTPUT), - OPT_SET_INT_F('s', "no-patch", &options->output_format, + OPT_SET_INT_F('s', NULL, &options->output_format, N_("suppress diff output"), DIFF_FORMAT_NO_OUTPUT, PARSE_OPT_NONEG), + OPT_BITOP(0, "no-patch", &options->output_format, + N_("negate --patch"), + DIFF_FORMAT_NO_OUTPUT, DIFF_FORMAT_PATCH | DIFF_FORMAT_DEFAULT), OPT_BITOP('u', NULL, &options->output_format, N_("generate patch"), DIFF_FORMAT_PATCH, DIFF_FORMAT_DEFAULT | DIFF_FORMAT_NO_OUTPUT),
diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh
index 7829cc810d..d7b9a2dab8 100755
--- a/t/t4000-diff-format.sh
+++ b/t/t4000-diff-format.sh@@ -67,9 +67,10 @@ test_expect_success 'git diff-files -s after editing work tree' ' test_must_be_empty err ' -test_expect_success 'git diff-files --no-patch as synonym for -s' ' - git diff-files --no-patch >actual 2>err && - test_must_be_empty actual && +test_expect_success 'git diff-files --no-patch negates --patch' ' + git diff-files >expected_raw && + git diff-files --raw --patch --no-patch >actual 2>err && + test_cmp expected_raw actual && test_must_be_empty err '
--
2.40.0+fc1