equivalent), but works when your bug
is intermittent. That is, it works in the presence of false negatives
(when a version happens to work this time even though it contains the
bug). It assumes that there are no false positives (in principle, the
same approach would work, but adding it may be non-trivial).
_____________
But BBChop is independent of any VCS and it would be easier for Git
users to have something integrated in Git.
Conclusion
----------
We have seen that regressions are an important problem, and that "git
bisect" has nice features that complement very well practices and
other tools, especially test suites, that are generally used to fight
regressions. But it might be needed to change some work-flows and
(bad) habits to get the most out of it.
Some improvements to the algorithms inside "git bisect" are possible
and some new features could help in some cases, but overall "git
bisect" works already very well, is used a lot, and is already very
useful. To back up that last claim, let's give the final word to Ingo
Molnar when he was asked by the author how much time does he think
"git bisect" saves him when he uses it:
_____________
a _lot_.
About ten years ago did i do my first 'bisection' of a Linux patch
queue. That was prior the Git (and even prior the BitKeeper) days. I
literally days spent sorting out patches, creating what in essence
were standalone commits that i guessed to be related to that bug.
It was a tool of absolute last resort. I'd rather spend days looking
at printk output than do a manual 'patch bisection'.
With Git bisect it's a breeze: in the best case i can get a ~15 step
kernel bisection done in 20-30 minutes, in an automated way. Even with
manual help or when bisecting multiple, overlapping bugs, it's rarely
more than an hour.
In fact it's invaluable because there are bugs i would never even
_try_ to debug if it wasn't for git bisect. In the past there were bug
patterns that were immediately hopeless for me to debug - at best i
could send the crash/bug signature to lkml and hope that someone else
can think of something.
And even if a bisection fails today it tells us something valuable
about the bug: that it's non-deterministic - timing or kernel image
layout dependent.
So git bisect is unconditional goodness - and feel free to quote that
;-)
_____________
Acknowledgments
---------------
Many thanks to Junio Hamano for his help in reviewing