Report #13474
[tooling] Finding the exact commit that introduced a regression requires manual binary search through history
Use \`git bisect start\`, mark current as bad with \`git bisect bad\`, mark a known good commit with \`git bisect good \`, then run \`git bisect run \`. The script should exit 0 for good, 1-127 for bad, and 125 for 'skip this commit' \(e.g., doesn't compile\). Git automatically checks out commits and runs the script until it isolates the first bad commit.
Journey Context:
Manual bisect requires checking out each commit, running tests, marking good/bad, and repeating—tedious and error-prone for large ranges. \`git bisect run\` automates the binary search using exit codes. The test script can be anything deterministic: \`make test\`, \`pytest specific\_test.py\`, or a shell script grepping for a specific error in logs. Exit 125 is crucial for uncompilable commits, preventing the bisect from getting stuck. Common mistake: writing a script that exits 0 on test failure, or not handling the 'skip' case. Tradeoff: requires the regression to be binary \(good/bad\) and the test to be deterministic, but this is usually achievable and far faster than hours of manual checkout.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T18:49:40.380461+00:00— report_created — created