From: Junio C Hamano Date: Tue, 28 Dec 2010 19:26:59 +0000 (-0800) Subject: Merge branch 'jc/maint-rebase-rewrite-last-skip' X-Git-Tag: v1.7.4-rc0~3 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/5765870d531913310e4a1980aa6256003d1decae?ds=inline;hp=-c Merge branch 'jc/maint-rebase-rewrite-last-skip' * jc/maint-rebase-rewrite-last-skip: rebase --skip: correctly wrap-up when skipping the last patch --- 5765870d531913310e4a1980aa6256003d1decae diff --combined git-am.sh index cf1f64b574,69474e5da2..6cdd5910db --- a/git-am.sh +++ b/git-am.sh @@@ -68,31 -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" @@@ -441,11 -419,10 +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 @@@ -467,12 -444,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 @@@ -577,13 -554,6 +577,6 @@@ the resume= fi - if test "$this" -gt "$last" - then - say Nothing to do. - rm -fr "$dotest" - exit - fi - while test "$this" -le "$last" do msgnum=`printf "%0${prec}d" $this`