aboutsummaryrefslogtreecommitdiff
path: root/git-rebase--interactive.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-12-30 12:51:42 -0800
committerJunio C Hamano <gitster@pobox.com>2007-12-30 12:51:42 -0800
commitab11903225270be7001b8c92f6ac4e165eaf4ecf (patch)
tree092934090170c2c85b4ab4171321294cbe6624c4 /git-rebase--interactive.sh
parent8ad1065e580c03035c583e2d237cc5b76f90cee4 (diff)
downloadgit-ab11903225270be7001b8c92f6ac4e165eaf4ecf.tar.gz
git-ab11903225270be7001b8c92f6ac4e165eaf4ecf.tar.xz
git-rebase -i: clean-up error check codepath.
After replaying a single change, the code performed a number of checks, but some of them were for sanity checking, failures from which should make the command abort, and others were checks to see if it should make a new commit object. Stringing them together with "&&" was wrong. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-rebase--interactive.sh')
-rwxr-xr-xgit-rebase--interactive.sh29
1 files changed, 19 insertions, 10 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index d0d83c35e..acdcc5417 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -365,17 +365,26 @@ do
test -d "$DOTEST" || die "No interactive rebase running"
- # commit if necessary
- git rev-parse --verify HEAD > /dev/null &&
- git update-index --refresh &&
- git diff-files --quiet &&
- ! git diff-index --cached --quiet HEAD -- &&
- . "$DOTEST"/author-script && {
- test ! -f "$DOTEST"/amend || git reset --soft HEAD^
- } &&
- export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE &&
- if ! git commit --no-verify -F "$DOTEST"/message -e
+ # Sanity check
+ git rev-parse --verify HEAD >/dev/null ||
+ die "Cannot read HEAD"
+ git update-index --refresh && git diff-files --quiet ||
+ die "Working tree is dirty"
+
+ # do we have anything to commit?
+ if git diff-index --cached --quiet HEAD --
then
+ : Nothing to commit -- skip this
+ else
+ . "$DOTEST"/author-script ||
+ die "Cannot find the author identity"
+ if test -f "$DOTEST"/amend
+ then
+ 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."
fi