From: Junio C Hamano Date: Wed, 22 Dec 2010 22:41:19 +0000 (-0800) Subject: Merge branch 'jc/maint-am-abort-safely' X-Git-Tag: v1.7.4-rc0~9 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/cfa775c10ef698c7b84e2d460d04272993c30da4?ds=inline;hp=-c Merge branch 'jc/maint-am-abort-safely' * jc/maint-am-abort-safely: am --abort: keep unrelated commits since the last failure and warn --- cfa775c10ef698c7b84e2d460d04272993c30da4 diff --combined git-am.sh index df09b42840,e5671f61c6..cf1f64b574 --- a/git-am.sh +++ b/git-am.sh @@@ -68,9 -68,31 +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 +441,11 @@@ the 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 @@@ -444,12 -467,12 +467,12 @@@ els set x first= } - case "$arg" in - /*) - set "$@" "$arg" ;; - *) - set "$@" "$prefix$arg" ;; - esac + if is_absolute_path "$arg" + then + set "$@" "$arg" + else + set "$@" "$prefix$arg" + fi done shift fi