Subject: Re: [PATCH] config: add string mapping for enum config_scope

From: Emily Shaffer <[email-masked]>
Date: Wed, 11 Dec 2019 15:25:40 -0800

On Wed, Dec 11, 2019 at 03:11:46PM -0800, Emily Shaffer wrote:
> On Wed, Dec 11, 2019 at 02:19:57PM -0800, Junio C Hamano wrote:
> > Emily Shaffer <[email-masked]> writes:
> > 
> > > If a user is interacting with their config files primarily by the 'git
> > > config' command, using the location flags (--global, --system, etc) then
> > > they may be more interested to see the scope of the config file they are
> > > editing, rather than the filepath.
> > >
> > > Signed-off-by: Emily Shaffer <[email-masked]>
> > > ---
> > > Note: This commit has been cherry-picked out of the "configuration-based
> > > hook management" topic, at
> > > lore.kernel.org/git/[email-masked]
> > >
> > > It turned out that I wanted to use it for git-bugreport as well - to
> > > explain the origin of the configs we are printing in the bugreport,
> > > without directly exposing the user's home directory path.
> > >
> > > This seems to have similar work to https://github.com/gitgitgadget/git/pull/478
> > > which I believe hasn't been mailed yet; but that change is targeted
> > > towards the builtin config command, rather than the config library.
> > > Since I wanted to use the library, I'm sending on my own now. Maybe
> > > this commit will be useful to that change's author.
> > 
> > One thing I wondered about this in the original version was if the
> > returned value should be localized.  In the context of the original,
> > the --porcelain mode refused to give this information in its output,
> > so it was OK to always localize the returned value to satisify the
> > other caller who wanted end-user-facing output.
> > 
> > But as a more general helper, I am not sure if this is the most
> > useful way to implement it.  Shouldn't the function rather return
> > the machine-readable tokens and allow callers to localize it as
> > needed with its own _() around the returned value?  I dunno.
> > 
> Hm. I think that's a good point, and allows this helper to be used for
> something silly like putting together a sample invocation to 'git
> config' if desired. It's meant to mirror the scope given to 'git config'
> - which makes me think that no, it shouldn't be localized, since the
> argument isn't localized either.

Huh. One interesting piece is that the code talks about .git/config as
"repo" config, whereas 'git-config' talks about "--local". Does it make
sense to teach this enum stringifier that CONFIG_SCOPE_REPO means
"local"? I think CONFIG_SCOPE_REPO is used for "--worktree" too, so
perhaps it's better to let "repo" mean "local or worktree".

> 
> Ok, I'll take the locale marker off.
> 
>  - Emily