Show 88 quoted lines
> ---
> This isn't strictly necessary for the series, but it seemed like a gap.
> You can always do:
>
> git -c diff.noprefix=false -c diff.mnemonicprefix=false ...
>
> but that's rather a mouthful.
>
> Note that there isn't a command-line equivalent for mnemonicprefix,
> either. I don't think it's worth adding unless somebody really wants it.
>
> Documentation/diff-options.txt | 5 +++++
> diff.c | 14 ++++++++++++++
> t/t4013-diff-various.sh | 10 ++++++++++
> 3 files changed, 29 insertions(+)
>
> diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
> index 7d73e976d99..08ab86189a7 100644
> --- a/Documentation/diff-options.txt
> +++ b/Documentation/diff-options.txt
> @@ -852,6 +852,11 @@ endif::git-format-patch[]
> --no-prefix::
> Do not show any source or destination prefix.
>
> +--default-prefix::
> + Use the default source and destination prefixes ("a/" and "b/").
> + This is usually the default already, but may be used to override
> + config such as `diff.noprefix`.
> +
> --line-prefix=<prefix>::
> Prepend an additional prefix to every line of output.
>
> diff --git a/diff.c b/diff.c
> index 750d1b1a6c3..b322e319ff3 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -5275,6 +5275,17 @@ static int diff_opt_no_prefix(const struct option *opt,
> return 0;
> }
>
> +static int diff_opt_default_prefix(const struct option *opt,
> + const char *optarg, int unset)
> +{
> + struct diff_options *options = opt->value;
> +
> + BUG_ON_OPT_NEG(unset);
> + BUG_ON_OPT_ARG(optarg);
> + diff_set_default_prefix(options);
> + return 0;
> +}
> +
> static enum parse_opt_result diff_opt_output(struct parse_opt_ctx_t *ctx,
> const struct option *opt,
> const char *arg, int unset)
> @@ -5564,6 +5575,9 @@ struct option *add_diff_options(const struct option *opts,
> OPT_CALLBACK_F(0, "no-prefix", options, NULL,
> N_("do not show any source or destination prefix"),
> PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_no_prefix),
> + OPT_CALLBACK_F(0, "default-prefix", options, NULL,
> + N_("use default prefixes a/ and b/"),
> + PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_default_prefix),
> OPT_INTEGER_F(0, "inter-hunk-context", &options->interhunkcontext,
> N_("show context between diff hunks up to the specified number of lines"),
> PARSE_OPT_NONEG),
> diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh
> index 0bc69579898..5de1d190759 100755
> --- a/t/t4013-diff-various.sh
> +++ b/t/t4013-diff-various.sh
> @@ -643,9 +643,19 @@ test_expect_success 'diff respects diff.noprefix' '
> check_prefix actual file0 file0
> '
>
> +test_expect_success 'diff --default-prefix overrides diff.noprefix' '
> + git -c diff.noprefix diff --default-prefix >actual &&
> + check_prefix actual a/file0 b/file0
> +'
> +
> test_expect_success 'diff respects diff.mnemonicprefix' '
> git -c diff.mnemonicprefix diff >actual &&
> check_prefix actual i/file0 w/file0
> '
>
> +test_expect_success 'diff --default-prefix overrides diff.mnemonicprefix' '
> + git -c diff.mnemonicprefix diff --default-prefix >actual &&
> + check_prefix actual a/file0 b/file0
> +'
> +
> test_done