Bissection sans les mains
Le bisect manuel nécessite un verdict humain à chaque étape. git bisect run automatise la boucle : fournissez un script qui retourne 0 pour bon, non-zéro pour mauvais et 125 pour "sauter ce commit." Bisect mènera la recherche à terme, souvent sans surveillance.
Le contrat
Votre script doit :
- Retourner 0 quand le commit est bon.
- Retourner entre 1 et 124, ou 126/127, quand il est mauvais.
- Retourner 125 quand le commit ne peut pas être testé.
- Éviter les codes hors de ces plages ; 128+ abandonne le bisect.
Exemple
#!/usr/bin/env bash
set -e
make clean
make || exit 125 # non testable
./tests/regression-1234 || exit 1
exit 0
Pilotez bisect avec :
git bisect start HEAD v2.4.0
git bisect run ./bisect-test.sh
One-liners en ligne
git bisect run sh -c "make && ./run-test || exit 1"
Régressions de performance
git bisect run sh -c '
cargo build --release || exit 125
t=$(./bench --json | jq .ms)
awk -v t="$t" "BEGIN { exit (t > 250) }"'
Tests intermittents
git bisect run sh -c '
for i in 1 2 3 4 5; do
./flaky-test || exit 1
done
exit 0'
Erreurs courantes
Retourner code 128 ou plus en pleine recherche abandonne le bisect. Oublier git bisect reset à la fin vous laisse en HEAD détaché. Ne pas utiliser exit 125 sur les commits non compilables cause de faux mauvais.
Rapports reproductibles
git bisect log > bisect.log