Re: [PATCH 09/12] builtin/show-ref: ensure mutual exclusiveness of subcommands
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Oct 24, 2023, 19:25 UTC
- Message-ID
- <CAPig+cSrp7vZuy7D_ENHKZKZzF4OSmCtfYNHPGMtS1Hj6gArDw@mail.gmail.com>
- In-Reply-To
- <d0a991cf4f892e73e4fd62ef3fdae3fa73277321.1698152926.git.ps@pks.im>
On Tue, Oct 24, 2023 at 9:11 AM Patrick Steinhardt <ps@pks.im> wrote:
Show 17 quoted lines
> The git-show-ref(1) command has three different modes, of which one is
> implicit and the other two can be chosen explicitly by passing a flag.
> But while these modes are standalone and cause us to execute completely
> separate code paths, we gladly accept the case where a user asks for
> both `--exclude-existing` and `--verify` at the same time even though it
> is not obvious what will happen. Spoiler: we ignore `--verify` and
> execute the `--exclude-existing` mode.
>
> Let's explicitly detect this invalid usage and die in case both modes
> were requested.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> diff --git a/builtin/show-ref.c b/builtin/show-ref.c
> @@ -269,6 +269,9 @@ int cmd_show_ref(int argc, const char **argv, const char *prefix)
> + if ((!!exclude_existing_opts.enabled + !!verify) > 1)
> + die(_("only one of --exclude-existing or --verify can be given"));Somewhat recently, work was done to normalize this sort of message. The result was to instead use the phrasing "options '%s' and '%s' cannot be used together". See, for instance, 43ea635c35 (i18n: refactor "foo and bar are mutually exclusive", 2022-01-05).