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>
This commit is contained in:
parent
8ad1065e58
commit
ab11903225
@ -365,17 +365,26 @@ do
|
|||||||
|
|
||||||
test -d "$DOTEST" || die "No interactive rebase running"
|
test -d "$DOTEST" || die "No interactive rebase running"
|
||||||
|
|
||||||
# commit if necessary
|
# Sanity check
|
||||||
git rev-parse --verify HEAD > /dev/null &&
|
git rev-parse --verify HEAD >/dev/null ||
|
||||||
git update-index --refresh &&
|
die "Cannot read HEAD"
|
||||||
git diff-files --quiet &&
|
git update-index --refresh && git diff-files --quiet ||
|
||||||
! git diff-index --cached --quiet HEAD -- &&
|
die "Working tree is dirty"
|
||||||
. "$DOTEST"/author-script && {
|
|
||||||
test ! -f "$DOTEST"/amend || git reset --soft HEAD^
|
# do we have anything to commit?
|
||||||
} &&
|
if git diff-index --cached --quiet HEAD --
|
||||||
export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE &&
|
|
||||||
if ! git commit --no-verify -F "$DOTEST"/message -e
|
|
||||||
then
|
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."
|
die "Could not commit staged changes."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user