Re: Git bisect does not find commit introducing the bug
- From
Oleg Taranenko <olegtaranenko@gmail.com>
- Date
- Feb 20, 2017, 07:38 UTC
- Message-ID
- <CABEd3j8sgDd8DXW8+2Q7pjANPTr-Ws1Xs1ap875mkxFOfnenYw@mail.gmail.com>
- In-Reply-To
- <CA+P7+xrch9WDo6OgU3vUEpXqAETZ07mkf76dC9nJctm0LTFQHQ@mail.gmail.com>
Show 16 quoted lines
>>> Then you must adjust your definition of "good": All commits that do not have >>> the feature, yet, are "good": since they do not have the feature in the >>> first place, they cannot have the breakage that you found in the feature. >>> >>> That is exactly the situation in your original example! But you constructed >>> the condition of goodness in such a simplistic way (depending on the >>> presence of a string), that it was impossible to distinguish between "does >>> not have the feature at all" and "has the feature, but it is broken". >> >> Johannes, thank you for correctly identifying the error in my logic. >> Indeed I was using the term 'bad' also for the commit without the >> feature. In order to find the commit introducing the bug in my example >> a new state is needed, which would make 'git bisect' a bit more >> complicated than the user 'most of the time' probably needs. Or do you >> think, it would make sense to ask the user for this state (if e.g 'git >> bisect' would be started with a new parameter)?
Show 5 quoted lines
> If a commit doesn't have the feature, then it is by definition, not > containing a broken feature, and you can simply use the "good" state. > There is no need for a different state. If you can't test the commit > because it's broken in some other way, you can use "git bisect skip" > but that isn't what you want in this case.
Commits missing feature == 'good' commit is a very confusing one.
Looks like in real life it happens much often, then git developers can imagine. For multi-branch/multi-feature workflow it's pretty easy not to recognize whether it is missing or not developed yet, especially on retrospective view where cherry-picking/squashing/merging is being used. My experience shows most annoying bugs are generating after a heavy merge (evil merge) with conflicts resolutions, where developer is not involved in the knowing what happens on counterpart changes. Then feature can be disappeared after it was worked & tested in its own branches.
@Alex, I'm pretty interesting in fixing this weird bisect behaviour as well, as far as I struggled on it last summer and continue struggling so far :) If you want we can join to your efforts on fixing.
Cheers, Oleg