Bisezione senza intervento manuale
Il bisect manuale richiede un giudizio umano a ogni passo. git bisect run automatizza il ciclo: fornire uno script che esce 0 per buono, non-zero per cattivo, e 125 per "salta questo commit".
Il contratto
- Esce 0 quando il commit e buono.
- Esce tra 1 e 124, o 126/127, quando cattivo.
- Esce 125 quando il commit non puo essere testato.
- Evitare codici di uscita oltre questi range; 128+ aborta il bisect.
Esempio
#!/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
One-liner inline
git bisect run sh -c "make && ./run-test || exit 1"
Regressioni di performance
git bisect run sh -c '
cargo build --release || exit 125
t=$(./bench --json | jq .ms)
awk -v t="$t" "BEGIN { exit (t > 250) }"'
Test instabili
git bisect run sh -c '
for i in 1 2 3 4 5; do
./flaky-test || exit 1
done
exit 0'
Errori comuni
Restituire codice 128+ a meta ricerca aborta il bisect. Dimenticare git bisect reset alla fine lascia su un detached HEAD.
Report riproducibili
git bisect log > bisect.log