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>
This commit is contained in:
parent
c5b09feb78
commit
dbedf9729b
@ -289,22 +289,22 @@ do_next () {
|
|||||||
output git reset --soft HEAD^
|
output git reset --soft HEAD^
|
||||||
pick_one -n $sha1 || failed=t
|
pick_one -n $sha1 || failed=t
|
||||||
echo "$author_script" > "$DOTEST"/author-script
|
echo "$author_script" > "$DOTEST"/author-script
|
||||||
case $failed in
|
if test $failed = f
|
||||||
f)
|
then
|
||||||
# This is like --amend, but with a different message
|
# This is like --amend, but with a different message
|
||||||
eval "$author_script"
|
eval "$author_script"
|
||||||
GIT_AUTHOR_NAME="$GIT_AUTHOR_NAME" \
|
GIT_AUTHOR_NAME="$GIT_AUTHOR_NAME" \
|
||||||
GIT_AUTHOR_EMAIL="$GIT_AUTHOR_EMAIL" \
|
GIT_AUTHOR_EMAIL="$GIT_AUTHOR_EMAIL" \
|
||||||
GIT_AUTHOR_DATE="$GIT_AUTHOR_DATE" \
|
GIT_AUTHOR_DATE="$GIT_AUTHOR_DATE" \
|
||||||
$USE_OUTPUT git commit --no-verify -F "$MSG" $EDIT_COMMIT
|
$USE_OUTPUT git commit --no-verify -F "$MSG" $EDIT_COMMIT || failed=t
|
||||||
;;
|
fi
|
||||||
t)
|
if test $failed = t
|
||||||
|
then
|
||||||
cp "$MSG" "$GIT_DIR"/MERGE_MSG
|
cp "$MSG" "$GIT_DIR"/MERGE_MSG
|
||||||
warn
|
warn
|
||||||
warn "Could not apply $sha1... $rest"
|
warn "Could not apply $sha1... $rest"
|
||||||
die_with_patch $sha1 ""
|
die_with_patch $sha1 ""
|
||||||
;;
|
fi
|
||||||
esac
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
warn "Unknown command: $command $sha1 $rest"
|
warn "Unknown command: $command $sha1 $rest"
|
||||||
@ -372,7 +372,8 @@ do
|
|||||||
test ! -f "$DOTEST"/amend || git reset --soft HEAD^
|
test ! -f "$DOTEST"/amend || git reset --soft HEAD^
|
||||||
} &&
|
} &&
|
||||||
export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE &&
|
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
|
require_clean_work_tree
|
||||||
do_rest
|
do_rest
|
||||||
|
Loading…
x
Reference in New Issue
Block a user