Da Anonimo (non verificato) , 29 Aprile 2026

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