diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-12-22 14:41:19 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-12-22 14:41:19 -0800 |
commit | cfa775c10ef698c7b84e2d460d04272993c30da4 (patch) | |
tree | 552d7266759f13355587e86091815b3cf4dcdd6e /git-am.sh | |
parent | 3ea3860758cc2501388059a89c1e5f4a90acb50d (diff) | |
parent | 7b3b7e37581fb5266a260687c21af1571b4ade81 (diff) | |
download | git-cfa775c10ef698c7b84e2d460d04272993c30da4.tar.gz |
Merge branch 'jc/maint-am-abort-safely'
* jc/maint-am-abort-safely:
am --abort: keep unrelated commits since the last failure and warn
Diffstat (limited to 'git-am.sh')
-rwxr-xr-x | git-am.sh | 27 |
1 files changed, 25 insertions, 2 deletions
@@ -68,9 +68,31 @@ sq () { stop_here () { echo "$1" >"$dotest/next" + git rev-parse --verify -q HEAD >"$dotest/abort-safety" exit 1 } +safe_to_abort () { + if test -f "$dotest/dirtyindex" + then + return 1 + fi + + if ! test -s "$dotest/abort-safety" + then + return 0 + fi + + abort_safety=$(cat "$dotest/abort-safety") + if test "z$(git rev-parse --verify -q HEAD)" = "z$abort_safety" + then + return 0 + fi + echo >&2 "You seem to have moved HEAD since the last 'am' failure." + echo >&2 "Not rewinding to ORIG_HEAD" + return 1 +} + stop_here_user_resolve () { if [ -n "$resolvemsg" ]; then printf '%s\n' "$resolvemsg" @@ -419,10 +441,11 @@ then exec git rebase --abort fi git rerere clear - test -f "$dotest/dirtyindex" || { + if safe_to_abort + then git read-tree --reset -u HEAD ORIG_HEAD git reset ORIG_HEAD - } + fi rm -fr "$dotest" exit ;; esac |