threads / bug / 6768

Possible BUG in 'git config'

Subject: Possible BUG in 'git config'

## tl;dr

5 messages between Feb 11, 2007 and Feb 11, 2007.

replies: 4people: 2as markdown or json

Marco Costalba· Feb 11, 2007, 14:13 UTC · lore
bash-3.1$ cat ./.git/config
[i18n]
        commitencoding = UTF-8

bash-3.1$ git repo-config --global user.name marco

bash-3.1$ git repo-config user.name marco

I would expect git repo-config user.name returns an empty string, because user.name is defined _only_ in global config file ~/.gitconfig

>From git-config documentation:
--global::
	Use global ~/.gitconfig file rather than the repository .git/config.
How it is possible to know if a variable is stored in local config file?

Thanks Marco

Johannes Schindelin· Feb 11, 2007, 16:24 UTC · re: Marco Costalba · lore

Re: Possible BUG in 'git config'

Hi,
On Sun, 11 Feb 2007, Marco Costalba wrote:
> I would expect git repo-config user.name returns an empty string, 
> because user.name is defined _only_ in global config file ~/.gitconfig

The whole point of ~/.gitconfig is to store variables to be seen in _all_ repositories.

> How it is possible to know if a variable is stored in local config file?
If you _have_ to, you can use
	$ GIT_CONFIG=.git/config git config -l
but I _strongly_ suggest you rethink your workflow if you need that.

$HOME/.gitconfig _really_ is only meant to make it unnecessary to set a variable in _all_ your repositories, and you can even override (although not unset) the variables locally.

So I am certain that you made a mistake when you need to ignore the settings in $HOME/.gitconfig.

Hth, Dscho

Marco Costalba· Feb 11, 2007, 17:21 UTC · re: Johannes Schindelin · lore

Re: Possible BUG in 'git config'

On 2/11/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
>
> So I am certain that you made a mistake when you need to ignore the
> settings in $HOME/.gitconfig.
>
Please do the following:

$ cd <git tree repo> $ git repo-config --global --unset user.name $ git repo-config --unset user.name $ git gui

Then go to Edit->options, you will see empty both 'git repository' and 'Global (All repositories)'

Then exit 'git gui' and type:

$ git repo-config --global user.name dummy $ git gui

Then go to Edit->options and.... surprise! dummy has been added to both panes instead of only in 'Global' one.

The bug is not in 'git gui' but in 'git repo-config' that when queried for user.name if doesn't find it in local config, silently falls back in global config. This is not documented and probably a bug because documentation of --global option says:

--global::
       Use global ~/.gitconfig file *rather than* the repository .git/config.

Thanks Marco

Johannes Schindelin· Feb 11, 2007, 17:37 UTC · re: Marco Costalba · lore

Re: Possible BUG in 'git config'

Hi,
On Sun, 11 Feb 2007, Marco Costalba wrote:
Show 24 quoted lines
> On 2/11/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> 
> > 
> > So I am certain that you made a mistake when you need to ignore the
> > settings in $HOME/.gitconfig.
> > 
> 
> Please do the following:
> 
> $ cd <git tree repo>
> $ git repo-config --global --unset user.name
> $ git repo-config --unset user.name
> $ git gui
> 
> Then go to Edit->options, you will see empty both 'git repository' and
> 'Global (All repositories)'
> 
> Then exit 'git gui' and type:
> 
> $ git repo-config --global user.name dummy
> $ git gui
> 
> Then go to Edit->options and.... surprise! dummy has been added to
> both panes instead of only in 'Global' one.

I don't know. If you want that level of control, yes. But as has been suggested before: .git/config as well as ~/.gitconfig have been meant to be edited manually, but some people really need a special purpose UI for everything, don't they?

As I said, for this you should use "GIT_CONFIG=$GIT_DIR/config git config".

Show 7 quoted lines
> The bug is not in 'git gui' but in 'git repo-config' that when queried
> for user.name if doesn't find it in local config, silently falls back
> in global config. This is not documented and probably a bug because
> documentation of --global option says:
> 
> --global::
>       Use global ~/.gitconfig file *rather than* the repository .git/config.

Yes, this is probably a bug. But it's obvious that if git-config _without_ --global would _not_ use ~/.gitconfig, that would rather make ~/.gitconfig pointless, wouldn't it?

So yes, the description should mention that this is meant for the case of _setting_ variables, not _querying_ variables. The original poster (Sean) probaly though -- IMHO correctly -- that querying with --global makes no sense.

Ciao, Dscho

Marco Costalba· Feb 11, 2007, 17:47 UTC · re: Johannes Schindelin · lore

Re: Possible BUG in 'git config'

On 2/11/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
Show 5 quoted lines
>
> Yes, this is probably a bug. But it's obvious that if git-config _without_
> --global would _not_ use ~/.gitconfig, that would rather make ~/.gitconfig
> pointless, wouldn't it?
>
Yes.
Show 5 quoted lines
> So yes, the description should mention that this is meant for the case of
> _setting_ variables, not _querying_ variables. The original poster (Sean)
> probaly though -- IMHO correctly -- that querying with --global makes no
> sense.
>

Yes. It makes non sense but it' allowed. So probably, at least for consistency, could exists a query without silent fallback. Something like

git repo-config --local user.name
Marco

← back to recent threads