Re: [PATCH v2] rebase -i: respect core.commentchar

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH v2] rebase -i: respect core.commentchar

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:56:08

John Keeping [off-list ref] writes:
quoted hunk
... 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.

I am not sure if I understand what you meant by "literal backslash
blah blah", though.

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help