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>maint
							parent
							
								
									8ad1065e58
								
							
						
					
					
						commit
						ab11903225
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue