Subject: Re: [PATCH v2 3/6] parse-options: stop supporting "" in the usagestr array

From: Junio C Hamano <[email-masked]>
Date: Fri, 10 Sep 2021 17:21:20 -0700

Ævar Arnfjörð Bjarmason  <[email-masked]> writes:

> The strings in the the "usagestr" array have special handling for the
> empty string dating back to f389c808b67 (Rework make_usage to print
> the usage message immediately, 2007-10-14).
>
> We'll prefix all strings after the first one with "or: ". Then if we
> encountered a "" we'll emit all strings after that point verbatim
> without any "or: " prefixing.
>
> This gets rid of that special case, which was added in
> f389c808b67 (Rework make_usage to print the usage message immediately,
> 2007-10-14). It was only used "blame" (the "credential-cache*" use of

used *by* "blame"

> it was removed in the preceding commit). Before this change we'd emit:
>
>     $ git blame -h
>     usage: git blame [<options>] [<rev-opts>] [<rev>] [--] <file>
>
>         <rev-opts> are documented in git-rev-list(1)

The most crucial information is missing.  It may be shared with the
previous step but it is even worse in this step.

Why is this loss of feature a desirable thing in the first place?

What are we gaining by breaking the "after listing the alternative
forms concatenated with 'or:', we can give a general description,
before going onto the list of options"?

Without that explained, the remainder of the proposed log message
reads more like an excuse for breaking the feature, justifying that
the loss of feature can be worked around, than the description of a
solution.

Thanks.