summaryrefslogtreecommitdiff
path: root/git-rebase--interactive.sh
diff options
context:
space:
mode:
authorDmitry Potapov <dpotapov@gmail.com>2008-09-08 20:42:48 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-09-09 15:37:48 (GMT)
commit8beb1f33d15af6cdb6bf7d8296fd73eb8df2f152 (patch)
treef97993669b5335e4aac9dceaab2a018359e64e97 /git-rebase--interactive.sh
parentaaefbfa66c348a461b3081873ef42819c8b38dac (diff)
downloadgit-8beb1f33d15af6cdb6bf7d8296fd73eb8df2f152.zip
git-8beb1f33d15af6cdb6bf7d8296fd73eb8df2f152.tar.gz
git-8beb1f33d15af6cdb6bf7d8296fd73eb8df2f152.tar.bz2
git-rebase-interactive: do not squash commits on abort
If git rebase interactive is stopped by "edit" command and then the user said "git rebase --continue" while having some stage changes, git rebase interactive is trying to amend the last commit by doing: git --soft reset && git commit However, the user can abort commit for some reason by providing an empty log message, and that would leave the last commit undone, while the user being completely unaware about what happened. Now if the user tries to continue, by issuing "git rebase --continue" that squashes two previous commits. Signed-off-by: Dmitry Potapov <dpotapov@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-rebase--interactive.sh')
-rwxr-xr-xgit-rebase--interactive.sh8
1 files changed, 6 insertions, 2 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 929d681..990104a 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -427,14 +427,18 @@ do
else
. "$DOTEST"/author-script ||
die "Cannot find the author identity"
+ amend=
if test -f "$DOTEST"/amend
then
+ amend=$(git rev-parse --verify HEAD)
git reset --soft HEAD^ ||
die "Cannot rewind the HEAD"
fi
export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE &&
- git commit --no-verify -F "$DOTEST"/message -e ||
- die "Could not commit staged changes."
+ git commit --no-verify -F "$DOTEST"/message -e || {
+ test -n "$amend" && git reset --soft $amend
+ die "Could not commit staged changes."
+ }
fi
require_clean_work_tree