1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-27 07:36:14 +02: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:
Björn Steinbrink 2009-07-30 13:41:57 +02:00 committed by Junio C Hamano
parent e276f018f2
commit ebdaae372b
2 changed files with 9 additions and 6 deletions

View File

@ -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) {

View File

@ -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 &&