Meta/basecheck: validate the synthetic base of topics
Junio C Hamano committed
Jul 18, 2026 at 19:23 UTC
ccbb5aad8aec65073894715bf8bfdd247654491b
1 file changed
+51
basecheck.sh
new
+51
@@ -0,0 +1,51 @@
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
+}