Von Gast (nicht überprüft) , 29 April 2026

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