-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add core.quotepath configuration variable.
We always quote "unusual" byte values in a pathname using C-string style, to make it safer for parsing scripts that do not handle NUL separated records well (or just too lazy to bother). The absolute minimum bytes that need to be quoted for this purpose are TAB, LF (and other control characters), double quote and backslash. However, we have also always quoted the bytes in high 8-bit range; this was partly because we were lazy and partly because we were being cautious. This introduces an internal "quote_path_fully" variable, and core.quotepath configuration variable to control it. When set to false, it does not quote bytes in high 8-bit range anymore but passes them intact. The variable defaults to "true" to retain the traditional behaviour for now. Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Junio C Hamano
committed
Jun 24, 2007
1 parent
aeb5932
commit 9378c16
Showing
6 changed files
with
148 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2006 Junio C Hamano | ||
# | ||
|
||
test_description='quoted output' | ||
|
||
. ./test-lib.sh | ||
|
||
FN='濱野' | ||
GN='純' | ||
HT=' ' | ||
LF=' | ||
' | ||
DQ='"' | ||
|
||
for_each_name () { | ||
for name in \ | ||
Name "Name and a${LF}LF" "Name and an${HT}HT" "Name${DQ}" \ | ||
"$FN$HT$GN" "$FN$LF$GN" "$FN $GN" "$FN$GN" "$FN$DQ$GN" \ | ||
"With SP in it" | ||
do | ||
eval "$1" | ||
done | ||
} | ||
|
||
test_expect_success setup ' | ||
for_each_name "echo initial >\"\$name\"" | ||
git add . && | ||
git commit -q -m Initial && | ||
for_each_name "echo second >\"\$name\"" && | ||
git commit -a -m Second | ||
for_each_name "echo modified >\"\$name\"" | ||
' | ||
|
||
cat >expect.quoted <<\EOF | ||
Name | ||
"Name and a\nLF" | ||
"Name and an\tHT" | ||
"Name\"" | ||
With SP in it | ||
"\346\277\261\351\207\216\t\347\264\224" | ||
"\346\277\261\351\207\216\n\347\264\224" | ||
"\346\277\261\351\207\216 \347\264\224" | ||
"\346\277\261\351\207\216\"\347\264\224" | ||
"\346\277\261\351\207\216\347\264\224" | ||
EOF | ||
|
||
cat >expect.raw <<\EOF | ||
Name | ||
"Name and a\nLF" | ||
"Name and an\tHT" | ||
"Name\"" | ||
With SP in it | ||
"濱野\t純" | ||
"濱野\n純" | ||
濱野 純 | ||
"濱野\"純" | ||
濱野純 | ||
EOF | ||
|
||
test_expect_success 'check fully quoted output from ls-files' ' | ||
git ls-files >current && diff -u expect.quoted current | ||
' | ||
|
||
test_expect_success 'check fully quoted output from diff-files' ' | ||
git diff --name-only >current && | ||
diff -u expect.quoted current | ||
' | ||
|
||
test_expect_success 'check fully quoted output from diff-index' ' | ||
git diff --name-only HEAD >current && | ||
diff -u expect.quoted current | ||
' | ||
|
||
test_expect_success 'check fully quoted output from diff-tree' ' | ||
git diff --name-only HEAD^ HEAD >current && | ||
diff -u expect.quoted current | ||
' | ||
|
||
test_expect_success 'setting core.quotepath' ' | ||
git config --bool core.quotepath false | ||
' | ||
|
||
test_expect_success 'check fully quoted output from ls-files' ' | ||
git ls-files >current && diff -u expect.raw current | ||
' | ||
|
||
test_expect_success 'check fully quoted output from diff-files' ' | ||
git diff --name-only >current && | ||
diff -u expect.raw current | ||
' | ||
|
||
test_expect_success 'check fully quoted output from diff-index' ' | ||
git diff --name-only HEAD >current && | ||
diff -u expect.raw current | ||
' | ||
|
||
test_expect_success 'check fully quoted output from diff-tree' ' | ||
git diff --name-only HEAD^ HEAD >current && | ||
diff -u expect.raw current | ||
' | ||
|
||
test_done |