rebase -i: interrupt rebase when "commit --amend" failed during "reword"
"commit --amend" could fail in cases like the user empties the commit message, or pre-commit failed. When it fails, rebase should be interrupted and alert the user, rather than ignoring the error and continue on rebasing. This also gives users a way to gracefully interrupt a "reword" if they decided they actually want to do an "edit", or even "rebase --abort". Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									1e501a7c47
								
							
						
					
					
						commit
						0becb3e4b9
					
				|  | @ -143,6 +143,21 @@ die_with_patch () { | |||
| 	die "$2" | ||||
| } | ||||
|  | ||||
| exit_with_patch () { | ||||
| 	echo "$1" > "$state_dir"/stopped-sha | ||||
| 	make_patch $1 | ||||
| 	git rev-parse --verify HEAD > "$amend" | ||||
| 	warn "You can amend the commit now, with" | ||||
| 	warn | ||||
| 	warn "	git commit --amend" | ||||
| 	warn | ||||
| 	warn "Once you are satisfied with your changes, run" | ||||
| 	warn | ||||
| 	warn "	git rebase --continue" | ||||
| 	warn | ||||
| 	exit $2 | ||||
| } | ||||
|  | ||||
| die_abort () { | ||||
| 	rm -rf "$state_dir" | ||||
| 	die "$1" | ||||
|  | @ -395,7 +410,13 @@ do_next () { | |||
| 		mark_action_done | ||||
| 		pick_one $sha1 || | ||||
| 			die_with_patch $sha1 "Could not apply $sha1... $rest" | ||||
| 		git commit --amend --no-post-rewrite | ||||
| 		git commit --amend --no-post-rewrite || { | ||||
| 			warn "Could not amend commit after successfully picking $sha1... $rest" | ||||
| 			warn "This is most likely due to an empty commit message, or the pre-commit hook" | ||||
| 			warn "failed. If the pre-commit hook failed, you may need to resolve the issue before" | ||||
| 			warn "you are able to reword the commit." | ||||
| 			exit_with_patch $sha1 1 | ||||
| 		} | ||||
| 		record_in_rewritten $sha1 | ||||
| 		;; | ||||
| 	edit|e) | ||||
|  | @ -404,19 +425,8 @@ do_next () { | |||
| 		mark_action_done | ||||
| 		pick_one $sha1 || | ||||
| 			die_with_patch $sha1 "Could not apply $sha1... $rest" | ||||
| 		echo "$sha1" > "$state_dir"/stopped-sha | ||||
| 		make_patch $sha1 | ||||
| 		git rev-parse --verify HEAD > "$amend" | ||||
| 		warn "Stopped at $sha1... $rest" | ||||
| 		warn "You can amend the commit now, with" | ||||
| 		warn | ||||
| 		warn "	git commit --amend" | ||||
| 		warn | ||||
| 		warn "Once you are satisfied with your changes, run" | ||||
| 		warn | ||||
| 		warn "	git rebase --continue" | ||||
| 		warn | ||||
| 		exit 0 | ||||
| 		exit_with_patch $sha1 0 | ||||
| 		;; | ||||
| 	squash|s|fixup|f) | ||||
| 		case "$command" in | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Andrew Wong
						Andrew Wong