| #!/bin/sh |
| |
| afresh () { |
| if git symbolic-ref -q HEAD |
| then |
| echo >&2 "HEAD not detached" |
| exit 1 |
| fi |
| b4 am -o- -t "$1" | |
| tee ./+b4am.mbx | |
| git am -s3 && rm -f ./+b4am.mbx |
| |
| exit $? |
| } |
| |
| force= |
| while case "$#" in 0) break;; esac |
| do |
| case "$1" in |
| -f | --force) |
| force=--force ;; |
| -*) |
| echo >&2 "$0: unknown option '$1'" |
| exit 1 ;; |
| *) |
| break ;; |
| esac |
| shift |
| done |
| |
| case "$#" in |
| 0) : happy ;; |
| 1) afresh "$1" ;; |
| *) echo >&2 "$0: extra arguments" ;; |
| esac |
| |
| above_master=$(git rev-list --first-parent master.. | wc -l) |
| above_next=$(git rev-list --first-parent next.. | wc -l) |
| if test "$above_master" != "$above_next" |
| then |
| if test "$force" = "--force" |
| then |
| echo >&2 warning: some patches are already in next |
| else |
| echo >&2 fatal: some patches are already in next |
| exit 1 |
| fi |
| fi |
| |
| MID= |
| OLD=$(git rev-parse HEAD) |
| git detach ${force+--force} || exit |
| git rev-list HEAD..$OLD | |
| while read commit |
| do |
| git notes --ref=amlog show $commit |
| done | |
| sed -n -e '/^Message-Id: /{ |
| s///p |
| q |
| }' | |
| xargs -n1 b4 am -o- -T | |
| tee ./+b4am.mbx | |
| git am -s3 && rm -f ./+b4am.mbx && |
| |
| git range-diff --notes=amlog --crea=999 @{-1}... |