From: Johannes Sixt Date: Tue, 25 Apr 2017 05:51:51 GMT Subject: Re: What's cooking in git.git (Apr 2017, #04; Wed, 19) Message-ID: <3bd4a2d7-ada9-6198-8cf1-573d80cae1b4@kdbg.org> In-Reply-To: Am 25.04.2017 um 04:00 schrieb Christian Couder: > On Sat, Apr 22, 2017 at 3:37 PM, Johannes Sixt wrote: >> Am 21.04.2017 um 14:29 schrieb Christian Couder: >>> >>> First bisect should ask you to test merge bases only if there are >>> "good" commits that are not ancestors of the "bad" commit. >> >> >> That's a tangent, but I have never understood why this needs to be so. >> Consider this: >> >> o--o--o--o--o--o--o--o--B >> / / >> -o--o--o--o--g--o--o--o--o--G >> >> When I mark B as bad and G as good, why would g have to be tested first? > > It is because g could be bad if the bug has been fixed between g and G. > If this happens and we don't test g, we would give a wrong result. Gah! So, a typical messy workflow "requires" this behavior. A clean branchy workflow like Git's does not because we know that a breakage is either on a topic branch, B, or a (the?) bad commit is an ancester of (the integration branch) G. > >> This is exactly what I do when I bisect in Git history: I mark the latest >> commits on git-gui and gitk sub-histories as good, because I know they can't >> possibly be bad. (In my setup, these two histories are ahead of pu and >> next.) > > Yeah, it is safe to do that in this case as we test the merge bases. The idea of marking git-gui and gitk histories that none of their commits is checked out: it erases all Git source code from the working directory, and a later bisection step places all code back and it requires a full build. Not a big deal with Git, but there are much larger code bases. The current bisect behavior makes this idea unworkable. For me, it was a big step backwards when it was implemented. :-( -- Hannes