git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Can't assign user.name to "E F" in git config

From
Avery Pennarun <apenwarr@gmail.com>
Date
Mar 29, 2010, 20:55 UTC
Message-ID
<32541b131003291355k5f93b251vded347e37315fee5@mail.gmail.com>
In-Reply-To
<308d4701003291332s500cbbci68e10a784ac1aa81@mail.gmail.com>
On Mon, Mar 29, 2010 at 4:32 PM, Disc Magnet <discmagnet@gmail.com> wrote:
> I've never done a git init and I don't have any .git directory in the
> current directory. I get warnings in the following example. Moreover,
> I can't assign user.name to "E F".

Take a look at 'man git-config' and search for "value_regex". The behaviour is incredibly non-obvious, but git-config is working as documented:

Show 12 quoted lines
> humpty@wall:~/work$ rm ~/.gitconfig
> humpty@wall:~/work$ git config --global user.name A B
> humpty@wall:~/work$ git config --global user.name C D
> humpty@wall:~/work$ git config --global user.name "E F"
> warning: user.name has multiple values
> humpty@wall:~/work$ git config -l
> user.name=A
> user.name=C
> humpty@wall:~/work$ cat ~/.gitconfig
> [user]
>        name = A
>        name = C

The A B line means "remove any user.name options containing B and then add A". Similarly with C D. But the "E F" line means "there is only one value of user.name, and it should be E F." At that time, user.name has more than one value, so git assumes you've made a mistake and refuses to perform the operation (which would have resulted in potentially many lost lines of config information).

You can fix it with "git config --global --unset-all user.name".
Show 11 quoted lines
> However, everything works fine here.
>
> humpty@wall:~/work$ rm ~/.gitconfig
> humpty@wall:~/work$ git config --global user.name A
> humpty@wall:~/work$ git config --global user.name C
> humpty@wall:~/work$ git config --global user.name "E F"
> humpty@wall:~/work$ git config -l
> user.name=E F
> humpty@wall:~/work$ cat ~/.gitconfig
> [user]
>        name = E F

In the above, you never created multiple values, because the first two lines didn't have extra parameters.

> Is this an expected behavior or is it a bug?

I didn't know about it before, and to be honest, it seems a little insane. But I found it by reading the man page, so it's clearly "expected" behaviour, in the sense that we're told to expect it. And now that it exists, removing it would break backward compatibility.

Have fun,
Avery
Previous: Disc Magnet
Message 2 of 2 in “Can't assign user.name to "E F" in git config”
  1. Disc MagnetMar 29, 2010
  2. Avery PennarunMar 29, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.