diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-12-06 00:59:03 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-12-06 00:59:04 +0400 |
commit | 3576f113cb3f36b9e2b36a84573754a922f2998b (patch) | |
tree | 6a37475bcceb021ee9b3f2345abac1dd4078c9e6 /builtin | |
parent | c5a77e8f9293674e9a936f01cc1719a316f87d24 (diff) | |
parent | f8c872127d4c48a6ec02abce34cb059ddeb6402a (diff) |
Merge branch 'nv/parseopt-opt-arg'
Enhance "rev-parse --parseopt" mode to help parsing options with
an optional parameter.
* nv/parseopt-opt-arg:
rev-parse --parseopt: add the --stuck-long mode
Use the word 'stuck' instead of 'sticked'
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/rev-parse.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index c76b89dc5b..3e8c4cce06 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -30,6 +30,8 @@ static int abbrev_ref; static int abbrev_ref_strict; static int output_sq; +static int stuck_long; + /* * Some arguments are relevant "revision" arguments, * others are about output format or other details. @@ -320,12 +322,15 @@ static int parseopt_dump(const struct option *o, const char *arg, int unset) struct strbuf *parsed = o->value; if (unset) strbuf_addf(parsed, " --no-%s", o->long_name); - else if (o->short_name) + else if (o->short_name && (o->long_name == NULL || !stuck_long)) strbuf_addf(parsed, " -%c", o->short_name); else strbuf_addf(parsed, " --%s", o->long_name); if (arg) { - strbuf_addch(parsed, ' '); + if (!stuck_long) + strbuf_addch(parsed, ' '); + else if (o->long_name) + strbuf_addch(parsed, '='); sq_quote_buf(parsed, arg); } return 0; @@ -351,6 +356,8 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix) OPT_BOOL(0, "stop-at-non-option", &stop_at_non_option, N_("stop parsing after the " "first non-option argument")), + OPT_BOOL(0, "stuck-long", &stuck_long, + N_("output in stuck long form")), OPT_END(), }; |