--- /dev/null
+#!/bin/sh
+
+if test $# = 3
+then
+ merge=$1 base=$2 target=$3
+ label=$(git log --oneline -1 "$merge")
+
+ base0=$(git rev-parse "$base^0") &&
+ base1=$(git rev-parse "$merge^2") &&
+ test "$base0" = "$base1" || {
+ echo >&2 "BAD: stale $base in $target"
+ exit 2
+ }
+
+ cd ../git.one || exit 1
+ if grep "$merge" :basecheck-tested-ok >/dev/null
+ then
+ exit 0
+ elif grep "$merge" :basecheck-tested-ng >/dev/null
+ then
+ echo >&2 "BAD (again): $label"
+ exit 1
+ fi
+
+ echo >&2 "Testing $merge $target"
+ git reset --quiet --hard "$merge" || exit 1
+ if Meta/Make -s -j32 >:basecheck-errors 2>&1
+ then
+ echo >&2 "OK: $label"
+ echo "$merge" >>:basecheck-tested-ok
+ exit 0
+ else
+ echo "$merge" >>:basecheck-tested-ng
+ cat ":basecheck-errors"
+ echo >&2 "BAD: $label"
+ exit 1
+ fi
+
+ exit 0 ;# just in case
+fi
+
+git log --oneline --abbrev=-1 --min-parents=2 ..seen |
+sed -n -e "s|^\([0-9a-f]*\) Merge branch '\(.*\)' into \(../..*\)$|\1 \2 \3|p" |
+{
+ exit=
+ while read merge base target
+ do
+ "$0" "$merge" "$base" "$target" </dev/null || exit=$?
+ done
+ exit $exit
+}