From 57f2b6b25868e32a25181b2a345b5bab3e3ba78f Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 5 Jul 2010 23:08:36 -0700 Subject: rebase-i: do not get fooled by a log message ending with backslash Signed-off-by: Junio C Hamano --- git-rebase--interactive.sh | 10 +++++----- t/t3404-rebase-interactive.sh | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index ed57552b7e..31e68603f4 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -450,7 +450,7 @@ record_in_rewritten() { do_next () { rm -f "$MSG" "$AUTHOR_SCRIPT" "$AMEND" || exit - read command sha1 rest < "$TODO" + read -r command sha1 rest < "$TODO" case "$command" in '#'*|''|noop) mark_action_done @@ -591,7 +591,7 @@ do_rest () { # skip picking commits whose parents are unchanged skip_unnecessary_picks () { fd=3 - while read command sha1 rest + while read -r command sha1 rest do # fd=3 means we skip the command case "$fd,$command,$(git rev-parse --verify --quiet $sha1^)" in @@ -644,13 +644,13 @@ rearrange_squash () { test -s "$1.sq" || return used= - while read pick sha1 message + while read -r pick sha1 message do case " $used" in *" $sha1 "*) continue ;; esac echo "$pick $sha1 $message" - while read squash action msg + while read -r squash action msg do case "$message" in "$msg"*) @@ -891,7 +891,7 @@ first and then run 'git rebase --continue' again." --abbrev=7 --reverse --left-right --topo-order \ $REVISIONS | \ sed -n "s/^>//p" | - while read shortsha1 rest + while read -r shortsha1 rest do if test t != "$PRESERVE_MERGES" then diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index ee9a1b25e6..47ca88fc52 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -630,4 +630,22 @@ test_expect_success 'always cherry-pick with --no-ff' ' test_cmp empty out ' +test_expect_success 'set up commits with funny messages' ' + git checkout -b funny A && + echo >>file1 && + test_tick && + git commit -a -m "end with slash\\" && + echo >>file1 && + test_tick && + git commit -a -m "another commit" +' + +test_expect_success 'rebase-i history with funny messages' ' + git rev-list A..funny >expect && + test_tick && + FAKE_LINES="1 2" git rebase -i A && + git rev-list A.. >actual && + test_cmp expect actual +' + test_done -- cgit v1.2.3