diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-12-30 12:51:42 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-12-30 12:51:42 -0800 |
commit | ab11903225270be7001b8c92f6ac4e165eaf4ecf (patch) | |
tree | 092934090170c2c85b4ab4171321294cbe6624c4 /git-rebase--interactive.sh | |
parent | 8ad1065e580c03035c583e2d237cc5b76f90cee4 (diff) | |
download | git-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-x | git-rebase--interactive.sh | 29 |
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 |