mirror of
https://github.com/git/git.git
synced 2025-01-23 16:03:32 +08:00
config: Keep inner whitespace verbatim
Configuration values are expected to be quoted when they have leading or trailing whitespace, but inner whitespace should be kept verbatim even if the value is not quoted. This is already documented in git-config(1), but the code caused inner whitespace to be collapsed to a single space, breaking, for example, clones from a path that has two consecutive spaces in it, as future fetches would only see a single space. Reported-by: John te Bokkel <tanj.tanj@gmail.com> Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e276f018f2
commit
ebdaae372b
10
config.c
10
config.c
@ -62,7 +62,8 @@ static char *parse_value(void)
|
||||
if (comment)
|
||||
continue;
|
||||
if (isspace(c) && !quote) {
|
||||
space = 1;
|
||||
if (len)
|
||||
space++;
|
||||
continue;
|
||||
}
|
||||
if (!quote) {
|
||||
@ -71,11 +72,8 @@ static char *parse_value(void)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (space) {
|
||||
if (len)
|
||||
value[len++] = ' ';
|
||||
space = 0;
|
||||
}
|
||||
for (; space; space--)
|
||||
value[len++] = ' ';
|
||||
if (c == '\\') {
|
||||
c = get_next_char();
|
||||
switch (c) {
|
||||
|
@ -733,6 +733,11 @@ echo >>result
|
||||
|
||||
test_expect_success '--null --get-regexp' 'cmp result expect'
|
||||
|
||||
test_expect_success 'inner whitespace kept verbatim' '
|
||||
git config section.val "foo bar" &&
|
||||
test "z$(git config section.val)" = "zfoo bar"
|
||||
'
|
||||
|
||||
test_expect_success SYMLINKS 'symlinked configuration' '
|
||||
|
||||
ln -s notyet myconfig &&
|
||||
|
Loading…
Reference in New Issue
Block a user