diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2010-01-12 16:38:36 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-01-12 21:34:50 +0100 |
commit | 234b3dae2fe83ae7df2c82194cd5f5eb01fd166d (patch) | |
tree | 95467cc9c2adfe8007a43376fdc191e4fcb6ac53 | |
parent | lib-rebase: Allow comments and blank lines to be added to the rebase script (diff) | |
download | git-234b3dae2fe83ae7df2c82194cd5f5eb01fd166d.tar.xz git-234b3dae2fe83ae7df2c82194cd5f5eb01fd166d.zip |
rebase-i: Ignore comments and blank lines in peek_next_command
Previously, blank lines and/or comments within a series of
squash/fixup commands would confuse "git rebase -i" into thinking that
the series was finished. It would therefore require the user to edit
the commit message for the squash/fixup commits seen so far. Then,
after continuing, it would ask the user to edit the commit message
again.
Ignore comments and blank lines within a group of squash/fixup
commands, allowing them to be processed in one go.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | git-rebase--interactive.sh | 2 | ||||
-rwxr-xr-x | t/t3404-rebase-interactive.sh | 24 |
2 files changed, 25 insertions, 1 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 30de96ee1a..55c451ade4 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -338,7 +338,7 @@ make_squash_message () { } peek_next_command () { - sed -n "1s/ .*$//p" < "$TODO" + sed -n -e "/^#/d" -e "/^$/d" -e "s/ .*//p" -e "q" < "$TODO" } do_next () { diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index ea26115133..d9382e41d3 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -265,6 +265,30 @@ test_expect_success 'squash and fixup generate correct log messages' ' git branch -D squash-fixup ' +test_expect_success 'squash ignores comments' ' + git checkout -b skip-comments E && + base=$(git rev-parse HEAD~4) && + FAKE_COMMIT_AMEND="ONCE" FAKE_LINES="# 1 # squash 2 # squash 3 # squash 4 #" \ + EXPECT_HEADER_COUNT=4 \ + git rebase -i $base && + test $base = $(git rev-parse HEAD^) && + test 1 = $(git show | grep ONCE | wc -l) && + git checkout to-be-rebased && + git branch -D skip-comments +' + +test_expect_success 'squash ignores blank lines' ' + git checkout -b skip-blank-lines E && + base=$(git rev-parse HEAD~4) && + FAKE_COMMIT_AMEND="ONCE" FAKE_LINES="> 1 > squash 2 > squash 3 > squash 4 >" \ + EXPECT_HEADER_COUNT=4 \ + git rebase -i $base && + test $base = $(git rev-parse HEAD^) && + test 1 = $(git show | grep ONCE | wc -l) && + git checkout to-be-rebased && + git branch -D skip-blank-lines +' + test_expect_success 'squash works as expected' ' for n in one two three four do |