@matheusbsbs / matheus-bagliano / commits / ff74126c03
Fork 0

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>

Johannes Schindelin committed Oct 10, 2008 at 13:42 UTC ff74126c03a8dfd04e7533573a5c420f2a7112ac
2 files changed +13 -1
git-rebase--interactive.sh
+2 -1
@@ -277,7 +277,7 @@ do_next () {
277 "$DOTEST"/amend || exit
278 read command sha1 rest < "$TODO"
279 case "$command" in
280 - '#'*|'')
280 + '#'*|''|noop)
281 mark_action_done
282 ;;
283 pick|p)
@@ -584,6 +584,7 @@ first and then run 'git rebase --continue' again."
584 --abbrev=7 --reverse --left-right --cherry-pick \
585 $UPSTREAM...$HEAD | \
586 sed -n "s/^>/pick /p" > "$TODO"
587 + test -s "$TODO" || echo noop >> "$TODO"
588 cat >> "$TODO" << EOF
589
590 # Rebase $SHORTUPSTREAM..$SHORTHEAD onto $SHORTONTO
t/t3404-rebase-interactive.sh
+11
@@ -419,4 +419,15 @@ test_expect_success 'rebase with a file named HEAD in worktree' '
419
420 '
421
422 +test_expect_success 'do "noop" when there is nothing to cherry-pick' '
423 +
424 + git checkout -b branch4 HEAD &&
425 + GIT_EDITOR=: git commit --amend \
426 + --author="Somebody else <somebody@else.com>"
427 + test $(git rev-parse branch3) != $(git rev-parse branch4) &&
428 + git rebase -i branch3 &&
429 + test $(git rev-parse branch3) = $(git rev-parse branch4)
430 +
431 +'
432 +
433 test_done