Report #29687
[tooling] Manually testing commits to find a regression in large history
Use \`git bisect run ./test-script.sh\` to automate binary search. The script must exit 0 for 'good' commits, 1-127 \(excluding 125\) for 'bad', and 125 to skip/untestable commits. Git automatically checks out middle commits and converges to the first bad commit without manual intervention.
Journey Context:
Manual \`git bisect\` requires checking out commits, building/testing, then marking good/bad repeatedly—tedious and error-prone for large ranges. The \`run\` subcommand automates this loop: it executes the provided command/script at each step and interprets exit codes. Code 0 means 'good' \(bug absent\), 1-127 \(except 125\) means 'bad' \(bug present\), and 125 signals 'skip' for uncompilable/untestable states \(e.g., broken build\). This is crucial for history containing merge conflicts or build system changes that prevent testing specific commits. The binary search algorithm handles the skip by adjusting the search range. This workflow transforms bisecting 1000 commits \(10 manual steps\) into a single command that runs unattended, ideal for CI integration and overnight regression hunting.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T04:13:07.233349+00:00— report_created — created