Skip to content

Commit

Permalink
rebase -i: interrupt rebase when "commit --amend" failed during "reword"
Browse files Browse the repository at this point in the history
"commit --amend" could fail in cases like the user empties the commit
message, or pre-commit failed.  When it fails, rebase should be
interrupted and alert the user, rather than ignoring the error and
continue on rebasing.  This also gives users a way to gracefully
interrupt a "reword" if they decided they actually want to do an "edit",
or even "rebase --abort".

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
andrewkww authored and gitster committed Nov 30, 2011
1 parent 1e501a7 commit 0becb3e
Showing 1 changed file with 23 additions and 13 deletions.
36 changes: 23 additions & 13 deletions git-rebase--interactive.sh
Expand Up @@ -143,6 +143,21 @@ die_with_patch () {
die "$2"
}

exit_with_patch () {
echo "$1" > "$state_dir"/stopped-sha
make_patch $1
git rev-parse --verify HEAD > "$amend"
warn "You can amend the commit now, with"
warn
warn " git commit --amend"
warn
warn "Once you are satisfied with your changes, run"
warn
warn " git rebase --continue"
warn
exit $2
}

die_abort () {
rm -rf "$state_dir"
die "$1"
Expand Down Expand Up @@ -395,7 +410,13 @@ do_next () {
mark_action_done
pick_one $sha1 ||
die_with_patch $sha1 "Could not apply $sha1... $rest"
git commit --amend --no-post-rewrite
git commit --amend --no-post-rewrite || {
warn "Could not amend commit after successfully picking $sha1... $rest"
warn "This is most likely due to an empty commit message, or the pre-commit hook"
warn "failed. If the pre-commit hook failed, you may need to resolve the issue before"
warn "you are able to reword the commit."
exit_with_patch $sha1 1
}
record_in_rewritten $sha1
;;
edit|e)
Expand All @@ -404,19 +425,8 @@ do_next () {
mark_action_done
pick_one $sha1 ||
die_with_patch $sha1 "Could not apply $sha1... $rest"
echo "$sha1" > "$state_dir"/stopped-sha
make_patch $sha1
git rev-parse --verify HEAD > "$amend"
warn "Stopped at $sha1... $rest"
warn "You can amend the commit now, with"
warn
warn " git commit --amend"
warn
warn "Once you are satisfied with your changes, run"
warn
warn " git rebase --continue"
warn
exit 0
exit_with_patch $sha1 0
;;
squash|s|fixup|f)
case "$command" in
Expand Down

0 comments on commit 0becb3e

Please sign in to comment.