Re: merge --no-ff is NOT mentioned in help
- From
Torsten Bögershausen <tboegi@web.de>
- Date
- Nov 17, 2016, 19:18 UTC
- Message-ID
- <cff54a0c-65bb-047e-b77d-916e300b66d4@web.de>
- In-Reply-To
- <xmqqr36anibl.fsf@gitster.mtv.corp.google.com>
On 17/11/16 18:10, Junio C Hamano wrote:
Show 58 quoted lines
> Mike Rappazzo <rappazzo@gmail.com> writes:
>
>> (Please reply inline)
> Indeed ;-)
>
>> On Wed, Nov 16, 2016 at 10:48 AM, Vanderhoof, Tzadik
>> <tzadik.vanderhoof@optum360.com> wrote:
>>> I am running: git version 2.10.1.windows.1
>>>
>>> I typed: git merge -h
>>>
>>> and got:
>>>
>>> usage: git merge [<options>] [<commit>...]
>>> or: git merge [<options>] <msg> HEAD <commit>
>>> or: git merge --abort
>>>
>>> -n do not show a diffstat at the end of the merge
>>> ...
>>> --overwrite-ignore update ignored files (default)
>>>
>>> Notice there is NO mention of the "--no-ff" option
>> I understand. On my system I can reproduce this by providing a bad
>> argument to `git merge`. This is the output from the arg setup. For
>> "boolean" arguments (like '--ff'), there is an automatic counter
>> argument with "no-" in there ('--no-ff') to disable the option. Maybe
>> it would make sense to word the output to include both.
> I think that was a deliberate design decision to avoid cluttering
> the short help text with mention of both --option and --no-option.
>
> People interested may want to try the attached single-liner patch to
> see how the output from _ALL_ commands that use parse-options API
> looks when given "-h". It could be that the result may not be too
> bad.
>
> I suspect that we may discover that some options that should be
> marked with NONEG are not marked along the way, which need to be
> fixed.
>
>
> parse-options.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/parse-options.c b/parse-options.c
> index 312a85dbde..348be6b240 100644
> --- a/parse-options.c
> +++ b/parse-options.c
> @@ -626,7 +626,9 @@ static int usage_with_options_internal(struct parse_opt_ctx_t *ctx,
> if (opts->long_name && opts->short_name)
> pos += fprintf(outfile, ", ");
> if (opts->long_name)
> - pos += fprintf(outfile, "--%s", opts->long_name);
> + pos += fprintf(outfile, "--%s%s",
> + (opts->flags & PARSE_OPT_NONEG) ? "" : "[no-]",
> + opts->long_name);
> if (opts->type == OPTION_NUMBER)
> pos += utf8_fprintf(outfile, _("-NUM"));
> +1 from my side (As I once spend some time to find out that the "no--" is automatically available)