Subject: Re: Allow git bisect to auto-skip

From: Junio C Hamano <[email-masked]>
Date: Fri, 22 Mar 2024 15:31:29 -0700

Olliver Schinagl <[email-masked]> writes:

> In some cases, we know a commit will always break bisect. This is bad
> and evil but sometimes needed.
> ...
> git commit -m 'copy old to new' -m 'GIT_SKIP_BISECT'
> ...

If "I want a bisect to skip any commit that has 'Skip Me' in its
subject" is the case, perhaps your "git bisect run" script can say

    #!/bin/sh

    case "$(git show -s --oneline)" in
    *"Skip Me"*) exit 125 ;;
    esac

    ... your test script body comes here ...
    if test successful
    then
        exit 0
    else
        exit 1
    fi

The _clue_ to mark a commit to be skipped does not have to be
hardcoded commit title.  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.  Maybe an approach more suitable
in such a situation would attach a note to such untestable commits
after the fact, and check if such a note is attached at the
beginning of "git bisect run" script and exit with 125.

And a new "git bisect --skip-when <condition>" option can be added to
manual bisection process.  The <condition> part would contain
something like

    case "$(git show -s --oneline)" in
    *"Skip Me"*) exit 125 ;;
    esac

taken from the above illustration.

But I am not sure what end result you are trying to achieve, so the
above are random collection of ideas.  Turning them into a patch is
left as an exercise to readers.