Stephan Beyer <s-beyer@xxxxxxx> writes: > Do I have a thinko or should it be this: > > + sed -e 's/'\''/'\''\\\'\'''\''/g' -e 's/.*/ '\''&'\''/' > ^^ > (added for escaping ' outside single quotes) Almost. Certainly my original was bad; shell unquotes to "s/'/'\''/g", but that backslash is not protected from further interpretation by sed, which happily turns backslash-single quote into a single quote, which I forgot. You feed "s/'/'\\\''/g" which correctly protects one backslash from sed by doubling it, but it has one unnecessary extra backslash. The extra one does not hurt because the backslash + single quote is eaten by sed to produce a single quote, but it is not quite right. We should be feeding sed with "s/'/'\\''/g", so you need to add one backslash to mine. > Have you forgotten to add the files prefixed with "am-test-5-" or is this > patch based on another one? The one I actually queued is b47dfe9 (git-am: add --directory=<dir> option, 2009-01-11) and it does include these test vectors. My bad. This patch is relative to b47dfe9. -- >8 -- Fix git-am shell quoting Noticed by Stephan Beyer; the new test is mine. Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- git-am.sh | 2 +- t/t4252-am-options.sh | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletions(-) diff --git c/git-am.sh w/git-am.sh index 7e6329b..4beb12d 100755 --- c/git-am.sh +++ w/git-am.sh @@ -38,7 +38,7 @@ sq () { for sqarg do printf "%s" "$sqarg" | - sed -e 's/'\''/'\''\'\'''\''/g' -e 's/.*/ '\''&'\''/' + sed -e 's/'\''/'\''\\'\'''\''/g' -e 's/.*/ '\''&'\''/' done } diff --git c/t/t4252-am-options.sh w/t/t4252-am-options.sh index e91a6da..5fdd188 100755 --- c/t/t4252-am-options.sh +++ w/t/t4252-am-options.sh @@ -58,4 +58,12 @@ test_expect_success 'interrupted am --directory="frotz nitfol"' ' grep One "frotz nitfol/file-5" ' +test_expect_success 'apply to a funny path' ' + with_sq="with'\''sq" + rm -fr .git/rebase-apply && + git reset --hard initial && + git am --directory="$with_sq" "$tm"/am-test-5-2 && + test -f "$with_sq/file-5" +' + test_done -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html