# Possible BUG in 'git config'

5 messages from 2007-02-11 to 2007-02-11. Participants: Marco Costalba, Johannes Schindelin.
Thread: https://gitlist.dev/t/6768

## Marco Costalba, 2007-02-11 14:13

Subject: Possible BUG in 'git config'
Message-ID: <e5bfff550702110613q315e1f7es4ca1a88b92e4c3e9@mail.gmail.com>
URL: https://gitlist.dev/e/e5bfff550702110613q315e1f7es4ca1a88b92e4c3e9%40mail.gmail.com

```
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, 2007-02-11 16:24

Subject: Re: Possible BUG in 'git config'
Message-ID: <Pine.LNX.4.63.0702111720260.22628@wbgn013.biozentrum.uni-wuerzburg.de>
URL: https://gitlist.dev/e/Pine.LNX.4.63.0702111720260.22628%40wbgn013.biozentrum.uni-wuerzburg.de
In-Reply-To: <e5bfff550702110613q315e1f7es4ca1a88b92e4c3e9@mail.gmail.com>

```
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, 2007-02-11 17:21

Subject: Re: Possible BUG in 'git config'
Message-ID: <e5bfff550702110921l710d62cr6c82baed1b678ab2@mail.gmail.com>
URL: https://gitlist.dev/e/e5bfff550702110921l710d62cr6c82baed1b678ab2%40mail.gmail.com
In-Reply-To: <Pine.LNX.4.63.0702111720260.22628@wbgn013.biozentrum.uni-wuerzburg.de>

```
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, 2007-02-11 17:37

Subject: Re: Possible BUG in 'git config'
Message-ID: <Pine.LNX.4.63.0702111829230.22628@wbgn013.biozentrum.uni-wuerzburg.de>
URL: https://gitlist.dev/e/Pine.LNX.4.63.0702111829230.22628%40wbgn013.biozentrum.uni-wuerzburg.de
In-Reply-To: <e5bfff550702110921l710d62cr6c82baed1b678ab2@mail.gmail.com>

```
Hi,

On Sun, 11 Feb 2007, Marco Costalba wrote:

> 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".

> 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, 2007-02-11 17:47

Subject: Re: Possible BUG in 'git config'
Message-ID: <e5bfff550702110947s77e8f264k951ae1c158fcee98@mail.gmail.com>
URL: https://gitlist.dev/e/e5bfff550702110947s77e8f264k951ae1c158fcee98%40mail.gmail.com
In-Reply-To: <Pine.LNX.4.63.0702111829230.22628@wbgn013.biozentrum.uni-wuerzburg.de>

```
On 2/11/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
>
> 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.

> 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

```
