diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2007-12-19 01:45:00 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-12-19 17:17:27 -0800 |
commit | dbedf9729bd349c7667630d50728214ed531f74d (patch) | |
tree | 8c7dab7fb97e751d1e9153f796af84cbb233b678 /git-rebase--interactive.sh | |
parent | c5b09feb786f6a2456ec3d8203d0f4d67f09f043 (diff) | |
download | git-dbedf9729bd349c7667630d50728214ed531f74d.tar.gz |
Catch and handle git-commit failures in git-rebase --interactive
If git-commit fails for any reason then git-rebase needs to stop
and not plow through the rest of the series. Its unlikely that
a future git-commit will succeed if the current attempt failed.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-rebase--interactive.sh')
-rwxr-xr-x | git-rebase--interactive.sh | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index fa9c11f173..47581ced5a 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -289,22 +289,22 @@ do_next () { output git reset --soft HEAD^ pick_one -n $sha1 || failed=t echo "$author_script" > "$DOTEST"/author-script - case $failed in - f) + if test $failed = f + then # This is like --amend, but with a different message eval "$author_script" GIT_AUTHOR_NAME="$GIT_AUTHOR_NAME" \ GIT_AUTHOR_EMAIL="$GIT_AUTHOR_EMAIL" \ GIT_AUTHOR_DATE="$GIT_AUTHOR_DATE" \ - $USE_OUTPUT git commit --no-verify -F "$MSG" $EDIT_COMMIT - ;; - t) + $USE_OUTPUT git commit --no-verify -F "$MSG" $EDIT_COMMIT || failed=t + fi + if test $failed = t + then cp "$MSG" "$GIT_DIR"/MERGE_MSG warn warn "Could not apply $sha1... $rest" die_with_patch $sha1 "" - ;; - esac + fi ;; *) warn "Unknown command: $command $sha1 $rest" @@ -372,7 +372,8 @@ do test ! -f "$DOTEST"/amend || git reset --soft HEAD^ } && export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE && - git commit --no-verify -F "$DOTEST"/message -e + git commit --no-verify -F "$DOTEST"/message -e || + die "Could not commit staged changes." require_clean_work_tree do_rest |