Par Anonyme (non vérifié) , 29 avril 2026

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