git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] config: Keep inner whitespace verbatim

From
Björn Steinbrink <b.steinbrink@gmx.de>
Date
Jul 30, 2009, 11:41 UTC
Message-ID
<20090730114157.GA5560@atjola.homenet>
In-Reply-To
<47ade73f0907291752k62c66903lc2617a16ec0973bd@mail.gmail.com>

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>
---
 config.c               |    6 +++---
 t/t1300-repo-config.sh |    5 +++++
 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/config.c b/config.c
index 738b244..e25b7d6 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) {
@@ -72,9 +73,8 @@ static char *parse_value(void)
 			}
 		}
 		if (space) {
-			if (len)
+			for (; space; --space)
 				value[len++] = ' ';
-			space = 0;
 		}
 		if (c == '\\') {
 			c = get_next_char();
diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh
index 8c43dcd..83b7294 100755
--- a/t/t1300-repo-config.sh
+++ b/t/t1300-repo-config.sh
@@ -755,6 +755,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 &&
-- 
1.6.3.GIT
Previous: John te Bokkel / Tempus
Message 2 of 2 in “remote url format in config”
  1. John te Bokkel / TempusJul 30, 2009
  2. config: Keep inner whitespace verbatimBjörn Steinbrink, Jul 30, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.