git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Can't assign user.name to "E F" in git config
@ 2010-03-29 20:32 Disc Magnet
  2010-03-29 20:55 ` Avery Pennarun
  0 siblings, 1 reply; 2+ messages in thread
From: Disc Magnet @ 2010-03-29 20:32 UTC (permalink / raw)
  To: git

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

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

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

The same behavior can be reproduced after doing git init and by
removing the --global option.

Is this an expected behavior or is it a bug?

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Can't assign user.name to "E F" in git config
  2010-03-29 20:32 Can't assign user.name to "E F" in git config Disc Magnet
@ 2010-03-29 20:55 ` Avery Pennarun
  0 siblings, 0 replies; 2+ messages in thread
From: Avery Pennarun @ 2010-03-29 20:55 UTC (permalink / raw)
  To: Disc Magnet; +Cc: git

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:

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

> 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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-03-29 20:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-29 20:32 Can't assign user.name to "E F" in git config Disc Magnet
2010-03-29 20:55 ` Avery Pennarun

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).