]> git.ipfire.org Git - thirdparty/git.git/commit - builtin/clone.c
clone: handle empty config values in -c
authorJonathan Nieder <jrnieder@gmail.com>
Tue, 2 May 2017 00:05:15 +0000 (17:05 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 2 May 2017 02:02:37 +0000 (11:02 +0900)
commitdb4eca1feaafa0669b7ba64c10314dfe8836576a
tree1bc338be729cf190a78f962a68569843c8a79544
parent3b9e3c2cede15057af3ff8076c45ad5f33829436
clone: handle empty config values in -c

"git clone --config" uses the following incantation to add an item to
a config file, instead of replacing an existing value:

git_config_set_multivar_gently(key, value, "^$", 0)

As long as no existing value matches the regex ^$, that works as
intended and adds to the config.  When a value is empty, though, it
replaces the existing value.

Noticed while trying to set credential.helper during a clone to use a
specific helper without inheriting from ~/.gitconfig and
/etc/gitconfig.  That is, I ran

git clone -c credential.helper= \
-c credential.helper=myhelper \
https://example.com/repo

intending to produce the configuration

[credential]
helper =
helper = myhelper

Without this patch, the 'helper =' line is not included and the
credential helper from /etc/gitconfig gets used.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/clone.c
t/t5611-clone-config.sh