|
|
|
@ -535,6 +535,34 @@ N_("git rev-parse --parseopt [<options>] -- [<args>...]\n"
@@ -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)
@@ -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)
@@ -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)
@@ -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)
@@ -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); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
if (!strcmp(arg, "--branches")) { |
|
|
|
|
for_each_branch_ref(show_reference, NULL); |
|
|
|
|
clear_ref_exclusion(&ref_excludes); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
if (starts_with(arg, "--tags=")) { |
|
|
|
|
for_each_glob_ref_in(show_reference, arg + 7, |
|
|
|
|
"refs/tags/", NULL); |
|
|
|
|
clear_ref_exclusion(&ref_excludes); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
if (!strcmp(arg, "--tags")) { |
|
|
|
|
for_each_tag_ref(show_reference, NULL); |
|
|
|
|
clear_ref_exclusion(&ref_excludes); |
|
|
|
|
if (opt_with_value(arg, "--branches", &arg)) { |
|
|
|
|
handle_ref_opt(arg, "refs/heads/"); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
if (starts_with(arg, "--glob=")) { |
|
|
|
|
for_each_glob_ref(show_reference, arg + 7, NULL); |
|
|
|
|
clear_ref_exclusion(&ref_excludes); |
|
|
|
|
if (opt_with_value(arg, "--tags", &arg)) { |
|
|
|
|
handle_ref_opt(arg, "refs/tags/"); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
if (starts_with(arg, "--remotes=")) { |
|
|
|
|
for_each_glob_ref_in(show_reference, arg + 10, |
|
|
|
|
"refs/remotes/", NULL); |
|
|
|
|
clear_ref_exclusion(&ref_excludes); |
|
|
|
|
if (skip_prefix(arg, "--glob=", &arg)) { |
|
|
|
|
handle_ref_opt(arg, NULL); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
if (!strcmp(arg, "--remotes")) { |
|
|
|
|
for_each_remote_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, "--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)
@@ -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) |
|
|
|
|