Re: Reachability lists in git
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 18, 2014, 21:11 UTC
- Message-ID
- <xmqq61ecusbs.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <xmqqa93ousme.fsf@gitster.dls.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 37 quoted lines
> Alan Stern <stern@rowland.harvard.edu> writes: > >> On Tue, 18 Nov 2014, Jonathan Nieder wrote: >> >>> Alan Stern wrote: >>> >>> > Tracking down regressions. Bisection isn't perfect. Suppose a >>> > bisection run ends up saying that B is the first bad commit. It's easy >>> > enough to build B and test it, to verify that it really is bad. >>> > >>> > But to be sure that B introduced the fault, it would help to find the >>> > latest commit that doesn't include B's changes -- that is, the latest >>> > commit that B isn't reachable from (or the maximal elements in the set >>> > of all such commits). >>> >>> Isn't that B^ (or B^ and B^2, if B is a merge)? >> >> No. Here's a simple example: >> >> Y >> / >> / >> X--B >> >> In this diagram, X = B^. But B isn't reachable from either X or Y, >> whereas it is reachable from one of X's children (namely Y). > ... > > Why do you say B is reachable from Y? > > If you mean that B is a merge between X and Y, then that is already > covered by what Jonathan wrote "(or B^ and B^2 if B is a merge)". > > X----Y > \ \ > .----B > ...
No, that cannot be what you meant. I was confused. The above picture does not make B reachable from Y (it is the other way around: B reaches Y). The topology where B isn't reachable from either X or Y and is reachable from Y would be
X---Y i.e. B = Y^2, X = Y^1 = B^1
\ /
BIf B is broken, and X is not, then Y would be contaminated by the breakage B introduces relative to X, unless Y is an evil merge and fixed that breakage while merging.
In any case, even if Y is found to be broken, its parent B is already broken, so that does not place the blame on Y, does it?
Still confused why you feel Y is any significant...