| 1 | #!/bin/sh |
| 2 | |
| 3 | afresh () { |
| 4 | if git symbolic-ref -q HEAD |
| 5 | then |
| 6 | echo >&2 "HEAD not detached" |
| 7 | exit 1 |
| 8 | fi |
| 9 | b4 am -o- -t "$1" | |
| 10 | tee ./+b4am.mbx | |
| 11 | git am -s3 && rm -f ./+b4am.mbx |
| 12 | |
| 13 | exit $? |
| 14 | } |
| 15 | |
| 16 | force= |
| 17 | while case "$#" in 0) break;; esac |
| 18 | do |
| 19 | case "$1" in |
| 20 | -f | --force) |
| 21 | force=--force ;; |
| 22 | -*) |
| 23 | echo >&2 "$0: unknown option '$1'" |
| 24 | exit 1 ;; |
| 25 | *) |
| 26 | break ;; |
| 27 | esac |
| 28 | shift |
| 29 | done |
| 30 | |
| 31 | case "$#" in |
| 32 | 0) : happy ;; |
| 33 | 1) afresh "$1" ;; |
| 34 | *) echo >&2 "$0: extra arguments" ;; |
| 35 | esac |
| 36 | |
| 37 | above_master=$(git rev-list --first-parent master.. | wc -l) |
| 38 | above_next=$(git rev-list --first-parent next.. | wc -l) |
| 39 | if test "$above_master" != "$above_next" |
| 40 | then |
| 41 | if test "$force" = "--force" |
| 42 | then |
| 43 | echo >&2 warning: some patches are already in next |
| 44 | else |
| 45 | echo >&2 fatal: some patches are already in next |
| 46 | exit 1 |
| 47 | fi |
| 48 | fi |
| 49 | |
| 50 | MID= |
| 51 | OLD=$(git rev-parse HEAD) |
| 52 | git detach ${force+--force} || exit |
| 53 | git rev-list HEAD..$OLD | |
| 54 | while read commit |
| 55 | do |
| 56 | git notes --ref=amlog show $commit |
| 57 | done | |
| 58 | sed -n -e '/^Message-Id: /{ |
| 59 | s///p |
| 60 | q |
| 61 | }' | |
| 62 | xargs -n1 b4 am -o- -T | |
| 63 | tee ./+b4am.mbx | |
| 64 | git am -s3 && rm -f ./+b4am.mbx && |
| 65 | |
| 66 | git range-diff --notes=amlog --crea=999 @{-1}... |