diff: add --default-prefix option
You can change the output of prefixes with diff.noprefix and diff.mnemonicprefix, but there's no easy way to override them from the command-line. We do have "--no-prefix", but there's no way to get back to the default prefix. So let's add an option to do that. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7c03d0db88
commit
b39a569729
@ -852,6 +852,11 @@ endif::git-format-patch[]
|
|||||||
--no-prefix::
|
--no-prefix::
|
||||||
Do not show any source or destination 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>::
|
--line-prefix=<prefix>::
|
||||||
Prepend an additional prefix to every line of output.
|
Prepend an additional prefix to every line of output.
|
||||||
|
|
||||||
|
14
diff.c
14
diff.c
@ -5275,6 +5275,17 @@ static int diff_opt_no_prefix(const struct option *opt,
|
|||||||
return 0;
|
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,
|
static enum parse_opt_result diff_opt_output(struct parse_opt_ctx_t *ctx,
|
||||||
const struct option *opt,
|
const struct option *opt,
|
||||||
const char *arg, int unset)
|
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,
|
OPT_CALLBACK_F(0, "no-prefix", options, NULL,
|
||||||
N_("do not show any source or destination prefix"),
|
N_("do not show any source or destination prefix"),
|
||||||
PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_no_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,
|
OPT_INTEGER_F(0, "inter-hunk-context", &options->interhunkcontext,
|
||||||
N_("show context between diff hunks up to the specified number of lines"),
|
N_("show context between diff hunks up to the specified number of lines"),
|
||||||
PARSE_OPT_NONEG),
|
PARSE_OPT_NONEG),
|
||||||
|
@ -643,9 +643,19 @@ test_expect_success 'diff respects diff.noprefix' '
|
|||||||
check_prefix actual file0 file0
|
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' '
|
test_expect_success 'diff respects diff.mnemonicprefix' '
|
||||||
git -c diff.mnemonicprefix diff >actual &&
|
git -c diff.mnemonicprefix diff >actual &&
|
||||||
check_prefix actual i/file0 w/file0
|
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
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user