Re: [PATCH v2] rebase -i: respect core.commentchar
From: John Keeping <hidden>
Date: 2016-06-15 22:56:08
On Tue, Feb 12, 2013 at 09:29:26AM -0800, Junio C Hamano wrote:
John Keeping [off-list ref] writes:quoted
... the following fixup is also needed to avoid relying on the shell emitting a literal backslash when a backslash isn't followed by a known escape character. -- >8 --diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index cbe36bf..84bd525 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh@@ -947,7 +947,7 @@ test_expect_success 'rebase -i respects core.commentchar' ' test_when_finished "git config --unset core.commentchar" && cat >comment-lines.sh <<EOF && #!$SHELL_PATH -sed -e "2,\$ s/^/\\\\\\/" "\$1" >"\$1".tmp +sed -e "2,\$ s/^/\\\\\\\\/" "\$1" >"\$1".tmp mv "\$1".tmp "\$1" EOF chmod a+x comment-lines.sh &&Yeek. If you used write_script with here-text that does not interpolate, write_script remove-all-but-the-first.sh <<\EOF sed -e '2,$s/^/\\/' <"$1" >"$1.tmp" && mv "$1.tmp" "$1" EOF the above would be much more readable.
Yet another thing for me to learn about ;-) Do you mean to use that outside the test case, so that the single quotes work? Or do I still need some level of escaping?
I am not sure if I understand what you meant by "literal backslash blah blah", though.
It turns out that having this in the script works (in bash and dash
although I haven't checked what Posix has to say about it):
sed -e "2,$ s/^/\\\/"
and is equivalent to:
sed -e '2,$ s/^/\\/'
because backslashes that aren't recognised as part of an escape sequence
are not treated specially.
John