Raw
1 #!/bin/sh
2
3 if test $# = 3
4 then
5 merge=$1 base=$2 target=$3
6 label=$(git log --oneline -1 "$merge")
7
8 base0=$(git rev-parse "$base^0") &&
9 base1=$(git rev-parse "$merge^2") &&
10 test "$base0" = "$base1" || {
11 echo >&2 "BAD: stale $base in $target"
12 exit 2
13 }
14
15 cd ../git.one || exit 1
16 if grep "$merge" :basecheck-tested-ok >/dev/null
17 then
18 exit 0
19 elif grep "$merge" :basecheck-tested-ng >/dev/null
20 then
21 echo >&2 "BAD (again): $label"
22 exit 1
23 fi
24
25 echo >&2 "Testing $merge $target"
26 git reset --quiet --hard "$merge" || exit 1
27 if Meta/Make -s -j32 >:basecheck-errors 2>&1
28 then
29 echo >&2 "OK: $label"
30 echo "$merge" >>:basecheck-tested-ok
31 exit 0
32 else
33 echo "$merge" >>:basecheck-tested-ng
34 cat ":basecheck-errors"
35 echo >&2 "BAD: $label"
36 exit 1
37 fi
38
39 exit 0 ;# just in case
40 fi
41
42 git log --oneline --abbrev=-1 --min-parents=2 ..seen |
43 sed -n -e "s|^\([0-9a-f]*\) Merge branch '\(.*\)' into \(../..*\)$|\1 \2 \3|p" |
44 {
45 exit=
46 while read merge base target
47 do
48 "$0" "$merge" "$base" "$target" </dev/null || exit=$?
49 done
50 exit $exit
51 }