Subject: Re: builtin/config: --name-only doesn't imply --show-names in "git config get"

From: Patrick Steinhardt <[email-masked]>
Date: Thu, 22 Aug 2024 07:57:22 +0200

On Wed, Aug 21, 2024 at 01:59:43PM -0700, Junio C Hamano wrote:
> Yukai Chou <[email-masked]> writes:
> 
> > Junio C Hamano <[email-masked]> 于2024年8月22日周四 00:07写道：
> >>
> >> Yukai Chou <[email-masked]> writes:
> >>
> >> > # get empty line(s)
> >> > git config get --all --name-only remote.origin.fetch
> >> > # get lines of name(s)
> >> > git config get --all --show-names --name-only remote.origin.fetch
> >> >
> >> > Either the doc or the behavior of --name-only needs some adjustment.
> >>
> >> This argues for making "all" imply we need to show the name of the
> >> configuration variable,
> >
> > Sorry can you elaborate on what that "all" meant? A new option "--show-all"?
> 
> Sorry, but "--all" is probably a red herring.
> 
> What I wanted to say was that we can 
> 
>  (1) get rid of "--show-name",
> 
>  (2) have the combination of options that can emit values for more
>     than one key to automatically show both name and value, and
> 
>  (3) add "--hide-name" so that such command can still show only the
>      value.
> 
> where I mixed up (2) and "all".  In fact, "--all" is not something
> that gives values for more than one key (it is things like regexp
> and urlmatch).

I wouldn't get rid of `--show-name`, as it also implicitly brings along
`--no-show-name`, basically checking the box for (3).

In any case, I agree that it probably makes sense to do (2). Unless I'm
mistaken, the only case we need to care about is `--regexp`, because
without all the emitted names would be the same anyway.

Patrick