Browse Source

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>
maint
Michael Haggerty 15 years ago committed by Junio C Hamano
parent
commit
234b3dae2f
  1. 2
      git-rebase--interactive.sh
  2. 24
      t/t3404-rebase-interactive.sh

2
git-rebase--interactive.sh

@ -338,7 +338,7 @@ make_squash_message () { @@ -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 () {

24
t/t3404-rebase-interactive.sh

@ -265,6 +265,30 @@ test_expect_success 'squash and fixup generate correct log messages' ' @@ -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

Loading…
Cancel
Save