aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Steinbrink <B.Steinbrink@gmx.de>2009-07-30 13:41:57 +0200
committerJunio C Hamano <gitster@pobox.com>2009-07-31 08:38:30 -0700
commitebdaae372b460ffdf5d153dcd0ac235d52b0d2ce (patch)
treee0e54f0f661802b8a13f2c84a329d774643132c8
parente276f018f2c1f0fc962fbe44a36708d1cdebada8 (diff)
downloadgit-ebdaae372b460ffdf5d153dcd0ac235d52b0d2ce.tar.gz
git-ebdaae372b460ffdf5d153dcd0ac235d52b0d2ce.tar.xz
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>
-rw-r--r--config.c10
-rwxr-xr-xt/t1300-repo-config.sh5
2 files changed, 9 insertions, 6 deletions
diff --git a/config.c b/config.c
index 1682273c1..7e5594b65 100644
--- a/config.c
+++ b/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) {
diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh
index 43ea28324..91cbd551d 100755
--- a/t/t1300-repo-config.sh
+++ b/t/t1300-repo-config.sh
@@ -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 &&