From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Josh Steadmon <steadmon@google.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] branch,checkout: fix --track usage strings
Date: Thu, 20 Jan 2022 13:05:52 +0100 [thread overview]
Message-ID: <220120.86zgnqli9v.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <3de40324bea6a1dd9bca2654721471e3809e87d8.1642538935.git.steadmon@google.com>
On Tue, Jan 18 2022, Josh Steadmon wrote:
> As Ævar pointed out in [1], the use of PARSE_OPT_LITERAL_ARGHELP with a
> list of allowed parameters is not recommended. Both git-branch and
> git-checkout were changed in d311566 (branch: add flags and config to
> inherit tracking, 2021-12-20) to use this discouraged combination for
> their --track flags.
>
> Fix this by removing PARSE_OPT_LITERAL_ARGHELP, and changing the arghelp
> to simply be "mode". Users may discover allowed values in the manual
> pages.
>
> [1]: https://lore.kernel.org/git/220111.86a6g3yqf9.gmgdl@evledraar.gmail.com/
>
> Signed-off-by: Josh Steadmon <steadmon@google.com>
> ---
> builtin/branch.c | 4 ++--
> builtin/checkout.c | 6 +++---
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/builtin/branch.c b/builtin/branch.c
> index 2251e6a54f..0c8d8a8827 100644
> --- a/builtin/branch.c
> +++ b/builtin/branch.c
> @@ -638,9 +638,9 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
> OPT__VERBOSE(&filter.verbose,
> N_("show hash and subject, give twice for upstream branch")),
> OPT__QUIET(&quiet, N_("suppress informational messages")),
> - OPT_CALLBACK_F('t', "track", &track, "direct|inherit",
> + OPT_CALLBACK_F('t', "track", &track, N_("mode"),
> N_("set branch tracking configuration"),
> - PARSE_OPT_OPTARG | PARSE_OPT_LITERAL_ARGHELP,
> + PARSE_OPT_OPTARG,
> parse_opt_tracking_mode),
> OPT_SET_INT_F(0, "set-upstream", &track, N_("do not use"),
> BRANCH_TRACK_OVERRIDE, PARSE_OPT_HIDDEN),
> diff --git a/builtin/checkout.c b/builtin/checkout.c
> index 94814c37b4..6a5dd2a2a2 100644
> --- a/builtin/checkout.c
> +++ b/builtin/checkout.c
> @@ -1549,9 +1549,9 @@ static struct option *add_common_switch_branch_options(
> {
> struct option options[] = {
> OPT_BOOL('d', "detach", &opts->force_detach, N_("detach HEAD at named commit")),
> - OPT_CALLBACK_F('t', "track", &opts->track, "direct|inherit",
> - N_("set up tracking mode (see git-pull(1))"),
> - PARSE_OPT_OPTARG | PARSE_OPT_LITERAL_ARGHELP,
> + OPT_CALLBACK_F('t', "track", &opts->track, N_("mode"),
> + N_("set branch tracking configuration"),
> + PARSE_OPT_OPTARG,
> parse_opt_tracking_mode),
> OPT__FORCE(&opts->force, N_("force checkout (throw away local modifications)"),
> PARSE_OPT_NOCOMPLETE),
>
> base-commit: b56bd95bbc8f716cb8cbb5fdc18b9b0f00323c6a
Additional comment: I think this change is correct, as noted in my
just-sent
https://lore.kernel.org/git/220120.864k5ymx55.gmgdl@evledraar.gmail.com/;
it would be nice but not necessary to follow-up with an optbug() test as
noted in
https://lore.kernel.org/git/220119.867davokff.gmgdl@evledraar.gmail.com/
though.
But to not merely repeat myself, I also saw that we're emitting the
wrong output from usage_argh() in cases of !PARSE_OPT_NOARG. I.e. we
need this fix too:
diff --git a/parse-options.c b/parse-options.c
index a8283037be9..2be1eabd84e 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -915,8 +915,10 @@ static int usage_argh(const struct option *opts, FILE *outfile)
s = literal ? "[=%s]" : "[=<%s>]";
else
s = literal ? "[%s]" : "[<%s>]";
- else
+ else if (opts->flags & PARSE_OPT_NOARG)
s = literal ? " %s" : " <%s>";
+ else
+ s = literal ? "[=]%s" : "[=]<%s>";
return utf8_fprintf(outfile, s, opts->argh ? _(opts->argh) : _("..."));
}
With that we'll now emit:
$ ./git add -h 2>&1|grep chmod
--chmod[=](+|-)x override the executable bit of the listed files
Which is correct, as we accept both of:
git add --chmod +x
git add --chmod=+x
But not:
$ git add --chmod
error: parse-options.c:58: option `chmod' requires a value
But the usage output stated that the "=" was mandatory before.
next prev parent reply other threads:[~2022-01-20 12:10 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-08 20:15 [RFC PATCH] branch: add "inherit" option for branch.autoSetupMerge Josh Steadmon
2021-09-08 20:44 ` Josh Steadmon
2021-09-11 0:25 ` [PATCH v2] " Josh Steadmon
2021-09-11 0:52 ` Junio C Hamano
2021-10-17 4:35 ` Josh Steadmon
2021-10-17 5:50 ` Junio C Hamano
2021-11-15 21:57 ` Josh Steadmon
2021-10-17 4:45 ` [PATCH v3] branch: add flags and config to inherit tracking Josh Steadmon
2021-10-18 18:31 ` Ævar Arnfjörð Bjarmason
2021-10-18 21:44 ` Junio C Hamano
2021-10-18 22:11 ` Ævar Arnfjörð Bjarmason
2021-11-15 22:22 ` Josh Steadmon
2021-10-18 17:50 ` [RFC PATCH] branch: add "inherit" option for branch.autoSetupMerge Glen Choo
2021-10-18 18:08 ` Glen Choo
2021-11-15 21:44 ` Josh Steadmon
2021-11-16 18:25 ` [PATCH v4] branch: add flags and config to inherit tracking Josh Steadmon
2021-11-17 0:33 ` Glen Choo
2021-11-18 22:29 ` Junio C Hamano
2021-11-30 22:05 ` Josh Steadmon
2021-11-19 6:47 ` Ævar Arnfjörð Bjarmason
2021-11-30 21:34 ` Josh Steadmon
2021-12-01 9:11 ` Ævar Arnfjörð Bjarmason
2021-12-07 7:12 ` [PATCH v5 0/2] branch: inherit tracking configs Josh Steadmon
2021-12-07 7:12 ` [PATCH v5 1/2] branch: accept multiple upstream branches for tracking Josh Steadmon
2021-12-07 8:57 ` Ævar Arnfjörð Bjarmason
2021-12-09 23:03 ` Josh Steadmon
2021-12-10 1:00 ` Ævar Arnfjörð Bjarmason
2021-12-07 19:28 ` Junio C Hamano
2021-12-14 20:35 ` Josh Steadmon
2021-12-08 0:16 ` Glen Choo
2021-12-08 0:17 ` Glen Choo
2021-12-09 22:45 ` Josh Steadmon
2021-12-09 23:47 ` Glen Choo
2021-12-10 1:03 ` Ævar Arnfjörð Bjarmason
2021-12-10 17:32 ` Glen Choo
2021-12-11 2:18 ` Ævar Arnfjörð Bjarmason
2021-12-08 23:53 ` Glen Choo
2021-12-09 0:08 ` Glen Choo
2021-12-09 22:49 ` Josh Steadmon
2021-12-09 23:43 ` Glen Choo
2021-12-07 7:12 ` [PATCH v5 2/2] branch: add flags and config to inherit tracking Josh Steadmon
2021-12-07 9:08 ` Ævar Arnfjörð Bjarmason
2021-12-08 0:35 ` Glen Choo
2021-12-14 22:15 ` Josh Steadmon
2021-12-14 22:27 ` Josh Steadmon
2021-12-07 19:41 ` Junio C Hamano
2021-12-14 20:37 ` Josh Steadmon
2021-12-08 1:02 ` Glen Choo
2021-12-14 22:10 ` Josh Steadmon
2021-12-07 18:52 ` [PATCH v5 0/2] branch: inherit tracking configs Junio C Hamano
2021-12-08 17:06 ` Glen Choo
2021-12-10 22:48 ` Johannes Schindelin
2021-12-14 22:11 ` Josh Steadmon
2021-12-14 23:44 ` [PATCH v6 0/3] " Josh Steadmon
2021-12-14 23:44 ` [PATCH v6 1/3] branch: accept multiple upstream branches for tracking Josh Steadmon
2021-12-15 21:30 ` Junio C Hamano
2021-12-16 19:57 ` Glen Choo
2021-12-17 5:10 ` Josh Steadmon
2021-12-20 18:29 ` Glen Choo
2021-12-21 3:27 ` Josh Steadmon
2021-12-14 23:44 ` [PATCH v6 2/3] branch: add flags and config to inherit tracking Josh Steadmon
2021-12-16 21:27 ` Glen Choo
2021-12-17 5:11 ` Josh Steadmon
2021-12-14 23:44 ` [PATCH v6 3/3] config: require lowercase for branch.autosetupmerge Josh Steadmon
2021-12-15 0:43 ` [PATCH v6 0/3] branch: inherit tracking configs Josh Steadmon
2021-12-16 0:02 ` Junio C Hamano
2021-12-16 0:37 ` Glen Choo
2021-12-16 1:20 ` Junio C Hamano
2021-12-17 5:12 ` [PATCH v7 " Josh Steadmon
2021-12-17 5:12 ` [PATCH v7 1/3] branch: accept multiple upstream branches for tracking Josh Steadmon
2021-12-17 5:12 ` [PATCH v7 2/3] branch: add flags and config to inherit tracking Josh Steadmon
2021-12-17 5:12 ` [PATCH v7 3/3] config: require lowercase for branch.*.autosetupmerge Josh Steadmon
2021-12-20 21:05 ` [PATCH v7 0/3] branch: inherit tracking configs Glen Choo
2021-12-21 3:30 ` [PATCH v8 " Josh Steadmon
2021-12-21 3:30 ` [PATCH v8 1/3] branch: accept multiple upstream branches for tracking Josh Steadmon
2021-12-21 6:55 ` Junio C Hamano
2021-12-21 18:25 ` Glen Choo
2021-12-21 3:30 ` [PATCH v8 2/3] branch: add flags and config to inherit tracking Josh Steadmon
2021-12-21 18:17 ` Glen Choo
2022-01-11 1:57 ` incorrect 'git (checkout|branch) -h' output with new --track modes (was: [PATCH v8 2/3] branch: add flags and config to inherit tracking) Ævar Arnfjörð Bjarmason
2022-01-18 20:49 ` [PATCH] branch,checkout: fix --track usage strings Josh Steadmon
2022-01-18 22:26 ` Junio C Hamano
2022-01-19 10:56 ` [PATCH] parse-options: document automatic PARSE_OPT_LITERAL_ARGHELP René Scharfe
2022-01-19 14:41 ` Ævar Arnfjörð Bjarmason
[not found] ` <CA++g3E-azP3wFTtNkbFdmT7VW3hvULL0WkkAdwfrMb6HDtcXdg@mail.gmail.com>
2022-01-19 15:30 ` René Scharfe
2022-01-19 18:16 ` Junio C Hamano
2022-01-20 10:30 ` René Scharfe
2022-01-20 18:25 ` Junio C Hamano
2022-01-21 9:42 ` René Scharfe
2022-01-21 20:59 ` Junio C Hamano
2022-01-20 12:05 ` Ævar Arnfjörð Bjarmason [this message]
2022-01-20 12:18 ` [PATCH] branch,checkout: fix --track usage strings Andreas Schwab
2022-01-20 14:00 ` Ævar Arnfjörð Bjarmason
2022-01-20 18:38 ` Junio C Hamano
2022-01-21 11:27 ` Ævar Arnfjörð Bjarmason
2022-01-21 21:12 ` Junio C Hamano
2022-01-19 10:20 ` incorrect 'git (checkout|branch) -h' output with new --track modes (was: [PATCH v8 2/3] branch: add flags and config to inherit tracking) René Scharfe
2022-01-20 12:00 ` Ævar Arnfjörð Bjarmason
2022-01-20 12:35 ` [PATCH] branch,checkout: fix --track documentation René Scharfe
2022-01-20 13:57 ` Ævar Arnfjörð Bjarmason
2022-01-20 19:08 ` Junio C Hamano
2021-12-21 3:30 ` [PATCH v8 3/3] config: require lowercase for branch.*.autosetupmerge Josh Steadmon
2021-12-21 18:13 ` [PATCH v8 0/3] branch: inherit tracking configs Glen Choo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=220120.86zgnqli9v.gmgdl@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=steadmon@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).