Merge branch 'cc/skip-to-optional-val'
Introduce a helper to simplify code to parse a common pattern that expects either "--key" or "--key=<something>". * cc/skip-to-optional-val: t4045: reindent to make helpers readable diff: add tests for --relative without optional prefix value diff: use skip_to_optional_arg_default() in parsing --relative diff: use skip_to_optional_arg_default() diff: use skip_to_optional_arg() index-pack: use skip_to_optional_arg() git-compat-util: introduce skip_to_optional_arg()
This commit is contained in:
50
diff.c
50
diff.c
@ -4512,17 +4512,12 @@ int diff_opt_parse(struct diff_options *options,
|
||||
options->output_format |= DIFF_FORMAT_NUMSTAT;
|
||||
else if (!strcmp(arg, "--shortstat"))
|
||||
options->output_format |= DIFF_FORMAT_SHORTSTAT;
|
||||
else if (!strcmp(arg, "-X") || !strcmp(arg, "--dirstat"))
|
||||
return parse_dirstat_opt(options, "");
|
||||
else if (skip_prefix(arg, "-X", &arg))
|
||||
return parse_dirstat_opt(options, arg);
|
||||
else if (skip_prefix(arg, "--dirstat=", &arg))
|
||||
else if (skip_prefix(arg, "-X", &arg) ||
|
||||
skip_to_optional_arg(arg, "--dirstat", &arg))
|
||||
return parse_dirstat_opt(options, arg);
|
||||
else if (!strcmp(arg, "--cumulative"))
|
||||
return parse_dirstat_opt(options, "cumulative");
|
||||
else if (!strcmp(arg, "--dirstat-by-file"))
|
||||
return parse_dirstat_opt(options, "files");
|
||||
else if (skip_prefix(arg, "--dirstat-by-file=", &arg)) {
|
||||
else if (skip_to_optional_arg(arg, "--dirstat-by-file", &arg)) {
|
||||
parse_dirstat_opt(options, "files");
|
||||
return parse_dirstat_opt(options, arg);
|
||||
}
|
||||
@ -4544,13 +4539,13 @@ int diff_opt_parse(struct diff_options *options,
|
||||
return stat_opt(options, av);
|
||||
|
||||
/* renames options */
|
||||
else if (starts_with(arg, "-B") || starts_with(arg, "--break-rewrites=") ||
|
||||
!strcmp(arg, "--break-rewrites")) {
|
||||
else if (starts_with(arg, "-B") ||
|
||||
skip_to_optional_arg(arg, "--break-rewrites", NULL)) {
|
||||
if ((options->break_opt = diff_scoreopt_parse(arg)) == -1)
|
||||
return error("invalid argument to -B: %s", arg+2);
|
||||
}
|
||||
else if (starts_with(arg, "-M") || starts_with(arg, "--find-renames=") ||
|
||||
!strcmp(arg, "--find-renames")) {
|
||||
else if (starts_with(arg, "-M") ||
|
||||
skip_to_optional_arg(arg, "--find-renames", NULL)) {
|
||||
if ((options->rename_score = diff_scoreopt_parse(arg)) == -1)
|
||||
return error("invalid argument to -M: %s", arg+2);
|
||||
options->detect_rename = DIFF_DETECT_RENAME;
|
||||
@ -4558,8 +4553,8 @@ int diff_opt_parse(struct diff_options *options,
|
||||
else if (!strcmp(arg, "-D") || !strcmp(arg, "--irreversible-delete")) {
|
||||
options->irreversible_delete = 1;
|
||||
}
|
||||
else if (starts_with(arg, "-C") || starts_with(arg, "--find-copies=") ||
|
||||
!strcmp(arg, "--find-copies")) {
|
||||
else if (starts_with(arg, "-C") ||
|
||||
skip_to_optional_arg(arg, "--find-copies", NULL)) {
|
||||
if (options->detect_rename == DIFF_DETECT_COPY)
|
||||
options->flags.find_copies_harder = 1;
|
||||
if ((options->rename_score = diff_scoreopt_parse(arg)) == -1)
|
||||
@ -4572,11 +4567,10 @@ int diff_opt_parse(struct diff_options *options,
|
||||
options->flags.rename_empty = 1;
|
||||
else if (!strcmp(arg, "--no-rename-empty"))
|
||||
options->flags.rename_empty = 0;
|
||||
else if (!strcmp(arg, "--relative"))
|
||||
else if (skip_to_optional_arg_default(arg, "--relative", &arg, NULL)) {
|
||||
options->flags.relative_name = 1;
|
||||
else if (skip_prefix(arg, "--relative=", &arg)) {
|
||||
options->flags.relative_name = 1;
|
||||
options->prefix = arg;
|
||||
if (arg)
|
||||
options->prefix = arg;
|
||||
}
|
||||
|
||||
/* xdiff options */
|
||||
@ -4646,9 +4640,7 @@ int diff_opt_parse(struct diff_options *options,
|
||||
else if (!strcmp(arg, "--no-follow")) {
|
||||
options->flags.follow_renames = 0;
|
||||
options->flags.default_follow_renames = 0;
|
||||
} else if (!strcmp(arg, "--color"))
|
||||
options->use_color = 1;
|
||||
else if (skip_prefix(arg, "--color=", &arg)) {
|
||||
} else if (skip_to_optional_arg_default(arg, "--color", &arg, "always")) {
|
||||
int value = git_config_colorbool(NULL, arg);
|
||||
if (value < 0)
|
||||
return error("option `color' expects \"always\", \"auto\", or \"never\"");
|
||||
@ -4668,15 +4660,10 @@ int diff_opt_parse(struct diff_options *options,
|
||||
if (cm < 0)
|
||||
die("bad --color-moved argument: %s", arg);
|
||||
options->color_moved = cm;
|
||||
} else if (!strcmp(arg, "--color-words")) {
|
||||
} else if (skip_to_optional_arg_default(arg, "--color-words", &options->word_regex, NULL)) {
|
||||
options->use_color = 1;
|
||||
options->word_diff = DIFF_WORDS_COLOR;
|
||||
}
|
||||
else if (skip_prefix(arg, "--color-words=", &arg)) {
|
||||
options->use_color = 1;
|
||||
options->word_diff = DIFF_WORDS_COLOR;
|
||||
options->word_regex = arg;
|
||||
}
|
||||
else if (!strcmp(arg, "--word-diff")) {
|
||||
if (options->word_diff == DIFF_WORDS_NONE)
|
||||
options->word_diff = DIFF_WORDS_PLAIN;
|
||||
@ -4714,15 +4701,10 @@ int diff_opt_parse(struct diff_options *options,
|
||||
options->flags.textconv_set_via_cmdline = 1;
|
||||
} else if (!strcmp(arg, "--no-textconv"))
|
||||
options->flags.allow_textconv = 0;
|
||||
else if (!strcmp(arg, "--ignore-submodules")) {
|
||||
options->flags.override_submodule_config = 1;
|
||||
handle_ignore_submodules_arg(options, "all");
|
||||
} else if (skip_prefix(arg, "--ignore-submodules=", &arg)) {
|
||||
else if (skip_to_optional_arg_default(arg, "--ignore-submodules", &arg, "all")) {
|
||||
options->flags.override_submodule_config = 1;
|
||||
handle_ignore_submodules_arg(options, arg);
|
||||
} else if (!strcmp(arg, "--submodule"))
|
||||
options->submodule_format = DIFF_SUBMODULE_LOG;
|
||||
else if (skip_prefix(arg, "--submodule=", &arg))
|
||||
} else if (skip_to_optional_arg_default(arg, "--submodule", &arg, "log"))
|
||||
return parse_submodule_opt(options, arg);
|
||||
else if (skip_prefix(arg, "--ws-error-highlight=", &arg))
|
||||
return parse_ws_error_highlight_opt(options, arg);
|
||||
|
||||
Reference in New Issue
Block a user