Freihandige Bisektion
Manueller Bisect erfordert ein menschliches Urteil bei jedem Schritt. git bisect run automatisiert die Schleife: liefern Sie ein Skript, das 0 fur gut, ungleich Null fur schlecht und 125 fur "diesen Commit uberspringen" zuruckgibt.
Der Vertrag
- Beendet mit 0, wenn der Commit gut ist.
- Beendet zwischen 1 und 124, oder 126/127, wenn schlecht.
- Beendet mit 125, wenn der Commit nicht getestet werden kann.
- Vermeiden Sie Exit-Codes ausserhalb dieser Bereiche.
Beispiel
#!/usr/bin/env bash
set -e
make clean
make || exit 125
./tests/regression-1234 || exit 1
exit 0
git bisect start HEAD v2.4.0
git bisect run ./bisect-test.sh
Inline-Einzeiler
git bisect run sh -c "make && ./run-test || exit 1"
Performance-Regressionen
git bisect run sh -c '
cargo build --release || exit 125
t=$(./bench --json | jq .ms)
awk -v t="$t" "BEGIN { exit (t > 250) }"'
Flaky-Tests
git bisect run sh -c '
for i in 1 2 3 4 5; do
./flaky-test || exit 1
done
exit 0'
Haufige Fehler
Exit-Code 128+ mitten in der Suche zuruckgeben bricht den Bisect ab.
Reproduzierbare Berichte
git bisect log > bisect.log