Browse Source

rebase -i: do not fail when there is no commit to cherry-pick

In case there is no commit to apply (for example because you rebase to
upstream and all your local patches have been applied there), do not
fail.  The non-interactive rebase already behaves that way.

Do this by introducing a new command, "noop", which is substituted for
an empty commit list, so that deleting the commit list can still abort
as before.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Johannes Schindelin 17 years ago committed by Shawn O. Pearce
parent
commit
ff74126c03
  1. 3
      git-rebase--interactive.sh
  2. 11
      t/t3404-rebase-interactive.sh

3
git-rebase--interactive.sh

@ -277,7 +277,7 @@ do_next () { @@ -277,7 +277,7 @@ do_next () {
"$DOTEST"/amend || exit
read command sha1 rest < "$TODO"
case "$command" in
'#'*|'')
'#'*|''|noop)
mark_action_done
;;
pick|p)
@ -584,6 +584,7 @@ first and then run 'git rebase --continue' again." @@ -584,6 +584,7 @@ first and then run 'git rebase --continue' again."
--abbrev=7 --reverse --left-right --cherry-pick \
$UPSTREAM...$HEAD | \
sed -n "s/^>/pick /p" > "$TODO"
test -s "$TODO" || echo noop >> "$TODO"
cat >> "$TODO" << EOF

# Rebase $SHORTUPSTREAM..$SHORTHEAD onto $SHORTONTO

11
t/t3404-rebase-interactive.sh

@ -419,4 +419,15 @@ test_expect_success 'rebase with a file named HEAD in worktree' ' @@ -419,4 +419,15 @@ test_expect_success 'rebase with a file named HEAD in worktree' '

'

test_expect_success 'do "noop" when there is nothing to cherry-pick' '

git checkout -b branch4 HEAD &&
GIT_EDITOR=: git commit --amend \
--author="Somebody else <somebody@else.com>"
test $(git rev-parse branch3) != $(git rev-parse branch4) &&
git rebase -i branch3 &&
test $(git rev-parse branch3) = $(git rev-parse branch4)

'

test_done

Loading…
Cancel
Save