git/list[1] front-page[2] threads[3] people[4] search[5] about
 

RE: Allow git bisect to auto-skip

From
rsbecker@nexbridge.com <rsbecker@nexbridge.com>
Date
Mar 24, 2024, 16:04 UTC
Message-ID
<066501da7e04$fecabf40$fc603dc0$@nexbridge.com>
In-Reply-To
<CAP8UFD2DhkmVias+RfMESJz9Z-rKKHWHB+MFHcDb9QLO16TOhg@mail.gmail.com>
On Sunday, March 24, 2024 10:29 AM, Christian Couder wrote:
Show 41 quoted lines
>On Sun, Mar 24, 2024 at 11:16 AM Stefan Haller <lists@haller-berlin.de> wrote:
>>
>> On 23.03.24 19:43, Junio C Hamano wrote:
>> > Stefan Haller <lists@haller-berlin.de> writes:
>> >
>> >> On 22.03.24 23:31, Junio C Hamano wrote:
>> >>> It often is discovered that a commit breaks bisection after the
>> >>> fact and it is not feasible to rebase all the history after the
>> >>> commit.
>> >>
>> >> This reminds me of a similar problem with git blame, for which we
>> >> have the blame.ignoreRevsFile config to work around it. Couldn't
>> >> there be a similar mechanism for bisect, e.g. bisect.skipRevsFile?
>> >
>> > A Very good point.  If a breakage of a commit is "this does not even
>> > build" kind of breakage, such a mechanism would be an excellent fit.
>> >
>> > But if a breakage is "only this particular test fails and we know
>> > the reason why it fails has nothing to do with the bug we are
>> > chasing", then compiling such a fixed list of commits, or pointing
>> > at such a list with a configuration variable, would not work very
>> > well, I am afraid.
>>
>> That's true, but the same can be said about blame.ignoreRevsFile.
>> There may be commits that contain both uninteresting whitespace
>> changes and real changes (not in a well-maintained project of course
>> :-), so it wouldn't be a good idea to add those to
>> blame.ignoreRevsFile. But that's not a reason not to offer the feature at all.
>
>I am not against the feature, but I think it would be especially useful if the file(s)
>containing the revs that should be skipped
>is(are) tracked in Git. In this case though, any such file wouldn't be used
>automatically after cloning the repo as the bisect.skipRevsFile option would still
>need to be configured.
>
>Also, how much better would this be compared to tracking  "git bisect run" scripts in
>the repo, even if they have to be copied somewhere else before they are launched?
>I wonder about this because writing the conditions that decide whether the current
>commit is good or bad might not be so easy either. So if the goal is to simplify things
>for users, then simplifying all the way by providing example scripts with comments
>about how they could be customized might be even better.
In some situations, git bisect is used for compile issues, while others in debugging. In development branches, bisect is sufficient. However, if one has multiple production deploy branches, where feature merge squash happens multiple times into multiple branches, this makes finding the offending commit using bisect rather difficult as the defect may come in and out depending on the order in which feature branches are squashed (some may have the bug, while others don't). I can see the point of teaching bisect to knowingly skipping specific versions in this setting, although it is arguable that the investigation probably should not happen on the destination branches where functional stability cannot be guaranteed.
But this brought up a thought. What if bisect had the notion of parallel context: Meaning running two (or more) bisects in parallel on the same repo in search of two semi-independent defects, then analysing convergence between the two analyses - something like
 bisect 1: A(good) B(good) C(bad) D(bad);
 bisect 2: A(good) B(good) C(good) D(bad);
 bisect 3: A(good) B(bad) C(good) D(bad),   <- a production-like branch
with an interpretation that C and D may have interrelated defects but started showing in B in one situation. This is not a well-baked thought, but I can see this having some relevance when sub-modules are involved and bugs exist in more than one sub-module with bisects happening in the main repo. [note: I am not certain where I am going with this idea as of yet].
--Randall
Previous: Christian CouderNext: Junio C Hamano
Message 10 of 14 in “Allow git bisect to auto-skip”
  1. Olliver SchinaglMar 22, 2024
  2. Junio C HamanoMar 22, 2024
  3. Olliver SchinaglMar 23, 2024
  4. Stefan HallerMar 23, 2024
  5. Junio C HamanoMar 23, 2024
  6. Olliver SchinaglMar 23, 2024
  7. Olliver SchinaglMar 24, 2024
  8. Stefan HallerMar 24, 2024
  9. Christian CouderMar 24, 2024
  10. rsbecker@nexbridge.comMar 24, 2024
  11. Junio C HamanoMar 24, 2024
  12. Olliver SchinaglMar 27, 2024
  13. Junio C HamanoMar 27, 2024
  14. Olliver SchinaglMar 28, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.