mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
Merge branch 'jk/rev-parse-cleanup' into maint
Code clean-up. * jk/rev-parse-cleanup: rev-parse: simplify parsing of ref options rev-parse: add helper for parsing "--foo/--foo=" rev-parse: use skip_prefix when parsing options
This commit is contained in:
commit
8f71209d1e
@ -535,6 +535,34 @@ N_("git rev-parse --parseopt [<options>] -- [<args>...]\n"
|
||||
"\n"
|
||||
"Run \"git rev-parse --parseopt -h\" for more information on the first usage.");
|
||||
|
||||
/*
|
||||
* Parse "opt" or "opt=<value>", setting value respectively to either
|
||||
* NULL or the string after "=".
|
||||
*/
|
||||
static int opt_with_value(const char *arg, const char *opt, const char **value)
|
||||
{
|
||||
if (skip_prefix(arg, opt, &arg)) {
|
||||
if (!*arg) {
|
||||
*value = NULL;
|
||||
return 1;
|
||||
}
|
||||
if (*arg++ == '=') {
|
||||
*value = arg;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void handle_ref_opt(const char *pattern, const char *prefix)
|
||||
{
|
||||
if (pattern)
|
||||
for_each_glob_ref_in(show_reference, pattern, prefix, NULL);
|
||||
else
|
||||
for_each_ref_in(prefix, show_reference, NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
}
|
||||
|
||||
int cmd_rev_parse(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
int i, as_is = 0, verify = 0, quiet = 0, revs_count = 0, type = 0;
|
||||
@ -671,14 +699,13 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
|
||||
flags |= GET_SHA1_QUIETLY;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--short") ||
|
||||
starts_with(arg, "--short=")) {
|
||||
if (opt_with_value(arg, "--short", &arg)) {
|
||||
filter &= ~(DO_FLAGS|DO_NOREV);
|
||||
verify = 1;
|
||||
abbrev = DEFAULT_ABBREV;
|
||||
if (!arg[7])
|
||||
if (!arg)
|
||||
continue;
|
||||
abbrev = strtoul(arg + 8, NULL, 10);
|
||||
abbrev = strtoul(arg, NULL, 10);
|
||||
if (abbrev < MINIMUM_ABBREV)
|
||||
abbrev = MINIMUM_ABBREV;
|
||||
else if (40 <= abbrev)
|
||||
@ -701,17 +728,17 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
|
||||
symbolic = SHOW_SYMBOLIC_FULL;
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--abbrev-ref") &&
|
||||
(!arg[12] || arg[12] == '=')) {
|
||||
if (opt_with_value(arg, "--abbrev-ref", &arg)) {
|
||||
abbrev_ref = 1;
|
||||
abbrev_ref_strict = warn_ambiguous_refs;
|
||||
if (arg[12] == '=') {
|
||||
if (!strcmp(arg + 13, "strict"))
|
||||
if (arg) {
|
||||
if (!strcmp(arg, "strict"))
|
||||
abbrev_ref_strict = 1;
|
||||
else if (!strcmp(arg + 13, "loose"))
|
||||
else if (!strcmp(arg, "loose"))
|
||||
abbrev_ref_strict = 0;
|
||||
else
|
||||
die("unknown mode for %s", arg);
|
||||
die("unknown mode for --abbrev-ref: %s",
|
||||
arg);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@ -719,8 +746,8 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
|
||||
for_each_ref(show_reference, NULL);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--disambiguate=")) {
|
||||
for_each_abbrev(arg + 15, show_abbrev, NULL);
|
||||
if (skip_prefix(arg, "--disambiguate=", &arg)) {
|
||||
for_each_abbrev(arg, show_abbrev, NULL);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--bisect")) {
|
||||
@ -728,46 +755,24 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
|
||||
for_each_ref_in("refs/bisect/good", anti_reference, NULL);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--branches=")) {
|
||||
for_each_glob_ref_in(show_reference, arg + 11,
|
||||
"refs/heads/", NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
if (opt_with_value(arg, "--branches", &arg)) {
|
||||
handle_ref_opt(arg, "refs/heads/");
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--branches")) {
|
||||
for_each_branch_ref(show_reference, NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
if (opt_with_value(arg, "--tags", &arg)) {
|
||||
handle_ref_opt(arg, "refs/tags/");
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--tags=")) {
|
||||
for_each_glob_ref_in(show_reference, arg + 7,
|
||||
"refs/tags/", NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
if (skip_prefix(arg, "--glob=", &arg)) {
|
||||
handle_ref_opt(arg, NULL);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--tags")) {
|
||||
for_each_tag_ref(show_reference, NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
if (opt_with_value(arg, "--remotes", &arg)) {
|
||||
handle_ref_opt(arg, "refs/remotes/");
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--glob=")) {
|
||||
for_each_glob_ref(show_reference, arg + 7, NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--remotes=")) {
|
||||
for_each_glob_ref_in(show_reference, arg + 10,
|
||||
"refs/remotes/", NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--remotes")) {
|
||||
for_each_remote_ref(show_reference, NULL);
|
||||
clear_ref_exclusion(&ref_excludes);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--exclude=")) {
|
||||
add_ref_exclusion(&ref_excludes, arg + 10);
|
||||
if (skip_prefix(arg, "--exclude=", &arg)) {
|
||||
add_ref_exclusion(&ref_excludes, arg);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--show-toplevel")) {
|
||||
@ -849,20 +854,20 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--since=")) {
|
||||
show_datestring("--max-age=", arg+8);
|
||||
if (skip_prefix(arg, "--since=", &arg)) {
|
||||
show_datestring("--max-age=", arg);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--after=")) {
|
||||
show_datestring("--max-age=", arg+8);
|
||||
if (skip_prefix(arg, "--after=", &arg)) {
|
||||
show_datestring("--max-age=", arg);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--before=")) {
|
||||
show_datestring("--min-age=", arg+9);
|
||||
if (skip_prefix(arg, "--before=", &arg)) {
|
||||
show_datestring("--min-age=", arg);
|
||||
continue;
|
||||
}
|
||||
if (starts_with(arg, "--until=")) {
|
||||
show_datestring("--min-age=", arg+8);
|
||||
if (skip_prefix(arg, "--until=", &arg)) {
|
||||
show_datestring("--min-age=", arg);
|
||||
continue;
|
||||
}
|
||||
if (show_flag(arg) && verify)
|
||||
|
Loading…
Reference in New Issue
Block a user