Skip to content

Commit ff59f6d

Browse files
jaysoffiangitster
authored andcommitted
fast-export: quote paths with spaces
A path containing a space must be quoted when used as an argument to either the copy or rename commands (because unlike other commands, the path is not the final thing on the line for those commands). Commit 6280dfd (fast-export: quote paths in output, 2011-08-05) previously attempted to fix fast-export's quoting by passing all paths through quote_c_style(). However, that function does not consider the space to be a character which requires quoting, so let's special-case the space inside print_path(). This will cause space-containing paths to also be quoted in other commands where such quoting is not strictly necessary, but it does not hurt to do so. The test from 6280dfd did not detect this because, while it does introduce renames in the export stream, it does not actually turn on rename detection, so they were presented as pairs of deletions/adds. Using "-M" reveals the bug. Signed-off-by: Jay Soffian <[email protected]> Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent d9f5ef7 commit ff59f6d

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

builtin/fast-export.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ static void print_path(const char *path)
185185
int need_quote = quote_c_style(path, NULL, NULL, 0);
186186
if (need_quote)
187187
quote_c_style(path, NULL, stdout, 0);
188+
else if (strchr(path, ' '))
189+
printf("\"%s\"", path);
188190
else
189191
printf("%s", path);
190192
}

t/t9350-fast-export.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ test_expect_success 'fast-export quotes pathnames' '
430430
git commit -m rename &&
431431
git read-tree --empty &&
432432
git commit -m deletion &&
433-
git fast-export HEAD >export.out &&
433+
git fast-export -M HEAD >export.out &&
434434
git rev-list HEAD >expect &&
435435
git init result &&
436436
cd result &&

0 commit comments

Comments
 (0)