Re: [RFC/PATCH]: reverse bisect v 2.0
- From
Andrew Ardill <andrew.ardill@gmail.com>
- Date
- Oct 7, 2011, 01:57 UTC
- Message-ID
- <CAH5451kUf=vPfgOOusmJjfbiyueX9VByJLzZ9WbyqLd0z78wxA@mail.gmail.com>
- In-Reply-To
- <7v62k4ban7.fsf@alter.siamese.dyndns.org>
Hi, I have given this some thought and have a slightly different proposal for the options to use. I have written a commit message that I think explains the need for the improvement, and justifies my proposal. The options I propose are '--intoduced' and '--removed'.
--->8---
Bisect is used to look for a commit that causes a specific change. Such a change can be classified by the user as either introducing something, or removing something, and this distinction is arbitrary. A change could be said to introduce a bug fix, or remove a bug - both formulations have inherently the same meaning, but search behaviour changes depending on which one we use. Suppose I want to find the commit that removed a bug. If I examine a snapshot and it contains the bug, the bug has not yet been *removed* and I must look in the future for its removal. Conversely, if I examine a snapshot and the bug fix exists, the bug fix must have been *introduced* at some earlier point and so I must search backwards.
Confusion exists at this point because at each verification step a question like 'Does this snapshot have X?' is asked, when what we eventually want to know is 'When was X introduced?' or 'When was X removed?'. Previously there has been no way to specify if we are looking for X being introduced or removed; it was assumed that we were looking for when something was introduced, for example when a bug was introduced.
Teach git bisect if we are looking for when something was introduced or when something was removed.
Examples. Search for a feature add: $ git bisect start --introduced='feature: git frotz says xyzzy' v0.99 master Bisecting: 171 revisions left to test after this (roughly 8 steps) $ ... build and then test ... $ git bisect tested Does this snapshot have 'feature: git frotz says xyzzy' [y/n]? yes # already added, look backwards
Search for a feature regression: $ git bisect start --removed='feature: git frotz says xyzzy' v0.99 master Bisecting: 171 revisions left to test after this (roughly 8 steps) $ ... build and then test ... $ git bisect tested Does this snapshot have 'feature: git frotz says xyzzy' [y/n]? yes # not removed yet, look forwards
--->8---
Regards,
Andrew Ardill