Raw
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}...