git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* totally confused as to what "git bisect skip" is supposed to do
@ 2018-02-09 19:36 Robert P. J. Day
  2018-02-09 19:43 ` Junio C Hamano
  0 siblings, 1 reply; 8+ messages in thread
From: Robert P. J. Day @ 2018-02-09 19:36 UTC (permalink / raw)
  To: Git Mailing list


  all right, i'm sure i'm just being an idiot, but i always thought i
knew what "git bisect skip" did and, now that i'm trying to put
together a simple example, i'm utterly confused so here's a stripped
down example.

  with linus kernel source code, start bisecting [v4.13,v4.14]:

$ git bisect start v4.14 v4.13
Bisecting: 7300 revisions left to test after this (roughly 13 steps)
[15d8ffc96464f6571ecf22043c45fad659f11bdd] Merge tag 'mmc-v4.14' of
git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
$

  now, based on how linux kernel release candidates work, i want to
skip a sizable chunk of those revisions:

$ git bisect skip v4.14-rc1..v4.14-rc2
Bisecting: 7300 revisions left to test after this (roughly 13 steps)
[15d8ffc96464f6571ecf22043c45fad659f11bdd] Merge tag 'mmc-v4.14' of
git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
$

  i'm confused ... why, after skipping a good chunk in the interval
[v4.13,v4.14], do i still have exactly 7300 revisions to bisect? what
am i so hopelessly misunderstanding here?

rday

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: totally confused as to what "git bisect skip" is supposed to do
  2018-02-09 19:36 totally confused as to what "git bisect skip" is supposed to do Robert P. J. Day
@ 2018-02-09 19:43 ` Junio C Hamano
  2018-02-09 19:51   ` Robert P. J. Day
  2018-02-12 10:44   ` Robert P. J. Day
  0 siblings, 2 replies; 8+ messages in thread
From: Junio C Hamano @ 2018-02-09 19:43 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Git Mailing list

"Robert P. J. Day" <rpjday@crashcourse.ca> writes:

>   i'm confused ... why, after skipping a good chunk in the interval
> [v4.13,v4.14], do i still have exactly 7300 revisions to bisect? what
> am i so hopelessly misunderstanding here?

Are you really "skipping" a chunk in the interval?

I thought that "git bisect skip" is a way for you to respond, when
"git bisect" gave you a commit to test, saying "sorry, I cannot test
that exact version, please offer me something else to test".  And
each time you say that, you are not narrowing the search space in
any way, so it is understandable that the numver of candidate bad
commits will not decrease.



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: totally confused as to what "git bisect skip" is supposed to do
  2018-02-09 19:43 ` Junio C Hamano
@ 2018-02-09 19:51   ` Robert P. J. Day
  2018-02-12 10:44   ` Robert P. J. Day
  1 sibling, 0 replies; 8+ messages in thread
From: Robert P. J. Day @ 2018-02-09 19:51 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing list

On Fri, 9 Feb 2018, Junio C Hamano wrote:

> "Robert P. J. Day" <rpjday@crashcourse.ca> writes:
>
> >   i'm confused ... why, after skipping a good chunk in the
> > interval [v4.13,v4.14], do i still have exactly 7300 revisions to
> > bisect? what am i so hopelessly misunderstanding here?
>
> Are you really "skipping" a chunk in the interval?

  i don't know ... am i? how should i interpret the man page?

> I thought that "git bisect skip" is a way for you to respond, when
> "git bisect" gave you a commit to test, saying "sorry, I cannot test
> that exact version, please offer me something else to test".  And
> each time you say that, you are not narrowing the search space in
> any way, so it is understandable that the number of candidate bad
> commits will not decrease.

  i caught that part of the man page, but i'm trying to understand
what i'm reading here:

https://blog.smart.ly/2015/02/03/git-bisect-debugging-with-feature-branches/

  particularly this suggestion:

  $ git bisect start master 75369f4a4c026772242368d870872562a3b693cb

  $ for rev in $(git rev-list
    75369f4a4c026772242368d870872562a3b693cb..master --merges
    --first-parent); do
    >   git rev-list $rev^2 --not $rev^
    > done | xargs git bisect skip

my interpretation of that page is how, after starting a bisection, one
can use "git bisect skip" to explicitly disqualify a sizable number of
commits from consideration, speeding up the subsequent bisection.

  if that's not what that web page is describing, then what *is* it
talking about?

rday

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: totally confused as to what "git bisect skip" is supposed to do
  2018-02-09 19:43 ` Junio C Hamano
  2018-02-09 19:51   ` Robert P. J. Day
@ 2018-02-12 10:44   ` Robert P. J. Day
  2018-02-12 16:21     ` Christian Couder
  1 sibling, 1 reply; 8+ messages in thread
From: Robert P. J. Day @ 2018-02-12 10:44 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing list

On Fri, 9 Feb 2018, Junio C Hamano wrote:

> "Robert P. J. Day" <rpjday@crashcourse.ca> writes:
>
> >   i'm confused ... why, after skipping a good chunk in the interval
> > [v4.13,v4.14], do i still have exactly 7300 revisions to bisect? what
> > am i so hopelessly misunderstanding here?
>
> Are you really "skipping" a chunk in the interval?
>
> I thought that "git bisect skip" is a way for you to respond, when
> "git bisect" gave you a commit to test, saying "sorry, I cannot test
> that exact version, please offer me something else to test".  And
> each time you say that, you are not narrowing the search space in
> any way, so it is understandable that the numver of candidate bad
> commits will not decrease.

  this might be an issue of terminology, then, as "man git-bisect"
clearly suggests you can skip a range:

    You can also skip a range of commits, instead of just one
    commit, using range notation. For example:

           $ git bisect skip v2.5..v2.6

    This tells the bisect process that no commit after v2.5, up to
    and including v2.6, should be tested.

my issue (if this is indeed an issue) is that if i select to skip a
sizable range of commits to test, should that not result in git bisect
telling me it now has far fewer revisions to test? if i, in fact,
manage to "disqualify" a number of commits from testing, is there no
visual confirmation that i now have fewer commits to test?

rday

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: totally confused as to what "git bisect skip" is supposed to do
  2018-02-12 10:44   ` Robert P. J. Day
@ 2018-02-12 16:21     ` Christian Couder
  2018-02-13 12:28       ` Robert P. J. Day
  0 siblings, 1 reply; 8+ messages in thread
From: Christian Couder @ 2018-02-12 16:21 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Junio C Hamano, Git Mailing list

On Mon, Feb 12, 2018 at 11:44 AM, Robert P. J. Day
<rpjday@crashcourse.ca> wrote:
> On Fri, 9 Feb 2018, Junio C Hamano wrote:
>
>> "Robert P. J. Day" <rpjday@crashcourse.ca> writes:
>>
>> >   i'm confused ... why, after skipping a good chunk in the interval
>> > [v4.13,v4.14], do i still have exactly 7300 revisions to bisect? what
>> > am i so hopelessly misunderstanding here?
>>
>> Are you really "skipping" a chunk in the interval?
>>
>> I thought that "git bisect skip" is a way for you to respond, when
>> "git bisect" gave you a commit to test, saying "sorry, I cannot test
>> that exact version, please offer me something else to test".  And
>> each time you say that, you are not narrowing the search space in
>> any way, so it is understandable that the numver of candidate bad
>> commits will not decrease.
>
>   this might be an issue of terminology, then, as "man git-bisect"
> clearly suggests you can skip a range:
>
>     You can also skip a range of commits, instead of just one
>     commit, using range notation. For example:
>
>            $ git bisect skip v2.5..v2.6
>
>     This tells the bisect process that no commit after v2.5, up to
>     and including v2.6, should be tested.

Yeah, I think this is kind of a terminology related.

First when git bisect says "Bisecting: XXX revisions left to test
after this" it doesn't mean that all those revisions left will
actually be tested, as git bisect's purpose is to avoid testing as
many revisions as possible.

So the XXX revisions are actually the revisions that possibly contain
the first bad commit.

And, as Junio wrote, when you tell git bisect that you cannot test
some revisions, it doesn't mean that those revisions cannot contain
the first bad commit.

> my issue (if this is indeed an issue) is that if i select to skip a
> sizable range of commits to test, should that not result in git bisect
> telling me it now has far fewer revisions to test? if i, in fact,
> manage to "disqualify" a number of commits from testing, is there no
> visual confirmation that i now have fewer commits to test?

I hope that the above clarification I gave is enough, but maybe the
following will help you.

If you cannot test let's say 20 commits because there is build problem
in those commits, and in the end Git tells you that the first bad
commit could be any of 3 commits, 2 of them that were previously
marked with skip, then you could still, if you wanted, fix those
commits, so that they can be built and test them.

So yeah if we only talk about the current bisection, the skipped
commits will not be tested, but if we talk about completely finishing
the bisection and finding the first bad commit, then those commits
could still be tested.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: totally confused as to what "git bisect skip" is supposed to do
  2018-02-12 16:21     ` Christian Couder
@ 2018-02-13 12:28       ` Robert P. J. Day
  2018-02-13 12:59         ` Christian Couder
  0 siblings, 1 reply; 8+ messages in thread
From: Robert P. J. Day @ 2018-02-13 12:28 UTC (permalink / raw)
  To: Christian Couder; +Cc: Junio C Hamano, Git Mailing list

On Mon, 12 Feb 2018, Christian Couder wrote:

> On Mon, Feb 12, 2018 at 11:44 AM, Robert P. J. Day
> <rpjday@crashcourse.ca> wrote:
> > On Fri, 9 Feb 2018, Junio C Hamano wrote:
> >
> >> "Robert P. J. Day" <rpjday@crashcourse.ca> writes:
> >>
> >> >   i'm confused ... why, after skipping a good chunk in the interval
> >> > [v4.13,v4.14], do i still have exactly 7300 revisions to bisect? what
> >> > am i so hopelessly misunderstanding here?
> >>
> >> Are you really "skipping" a chunk in the interval?
> >>
> >> I thought that "git bisect skip" is a way for you to respond, when
> >> "git bisect" gave you a commit to test, saying "sorry, I cannot test
> >> that exact version, please offer me something else to test".  And
> >> each time you say that, you are not narrowing the search space in
> >> any way, so it is understandable that the numver of candidate bad
> >> commits will not decrease.
> >
> >   this might be an issue of terminology, then, as "man git-bisect"
> > clearly suggests you can skip a range:
> >
> >     You can also skip a range of commits, instead of just one
> >     commit, using range notation. For example:
> >
> >            $ git bisect skip v2.5..v2.6
> >
> >     This tells the bisect process that no commit after v2.5, up to
> >     and including v2.6, should be tested.
>
> Yeah, I think this is kind of a terminology related.
>
> First when git bisect says "Bisecting: XXX revisions left to test
> after this" it doesn't mean that all those revisions left will
> actually be tested, as git bisect's purpose is to avoid testing as
> many revisions as possible.
>
> So the XXX revisions are actually the revisions that possibly
> contain the first bad commit.
>
> And, as Junio wrote, when you tell git bisect that you cannot test
> some revisions, it doesn't mean that those revisions cannot contain
> the first bad commit.
>
> > my issue (if this is indeed an issue) is that if i select to skip
> > a sizable range of commits to test, should that not result in git
> > bisect telling me it now has far fewer revisions to test? if i, in
> > fact, manage to "disqualify" a number of commits from testing, is
> > there no visual confirmation that i now have fewer commits to
> > test?
>
> I hope that the above clarification I gave is enough, but maybe the
> following will help you.
>
> If you cannot test let's say 20 commits because there is build
> problem in those commits, and in the end Git tells you that the
> first bad commit could be any of 3 commits, 2 of them that were
> previously marked with skip, then you could still, if you wanted,
> fix those commits, so that they can be built and test them.
>
> So yeah if we only talk about the current bisection, the skipped
> commits will not be tested, but if we talk about completely
> finishing the bisection and finding the first bad commit, then those
> commits could still be tested.

  ok, i'll give this more thought later in the week when i have the
time, but is there a simple expression (using "gitrevisions") that
defines the set of revisions to be tested by bisection if i define the
search space between <GOOD> and <BAD>?

  consider the following history:

               ... 50000 commits ... (feature branch)
             /                      ^
            /                        \
           v                          \
  A  <--  B <-- <GOOD> <-- D <-- E <-- F <-- <BAD>

so imagine branching at B, creating a massively lengthy feature
branch, and merging it back to master at F. now imagine i know "GOOD"
is a good revision, and "BAD" is broken. according to the above, the
offending commit could be any of D, E, or any of the 50,000 commits on
the feature branch, correct? so if i had the above commit history,
would:

  $ git bisect start <BAD> <GOOD>

tell me i have 50,002 revisions to test? am i making sense here?

rday

p.s. i suspect i should RTFS to see exactly how git bisect does its
work.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: totally confused as to what "git bisect skip" is supposed to do
  2018-02-13 12:28       ` Robert P. J. Day
@ 2018-02-13 12:59         ` Christian Couder
  2018-02-13 13:10           ` Robert P. J. Day
  0 siblings, 1 reply; 8+ messages in thread
From: Christian Couder @ 2018-02-13 12:59 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Junio C Hamano, Git Mailing list

On Tue, Feb 13, 2018 at 1:28 PM, Robert P. J. Day <rpjday@crashcourse.ca> wrote:
>
> p.s. i suspect i should RTFS to see exactly how git bisect does its
> work.

You might want to read https://git-scm.com/docs/git-bisect-lk2009.html
before reading the source code.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: totally confused as to what "git bisect skip" is supposed to do
  2018-02-13 12:59         ` Christian Couder
@ 2018-02-13 13:10           ` Robert P. J. Day
  0 siblings, 0 replies; 8+ messages in thread
From: Robert P. J. Day @ 2018-02-13 13:10 UTC (permalink / raw)
  To: Christian Couder; +Cc: Junio C Hamano, Git Mailing list

On Tue, 13 Feb 2018, Christian Couder wrote:

> On Tue, Feb 13, 2018 at 1:28 PM, Robert P. J. Day <rpjday@crashcourse.ca> wrote:
> >
> > p.s. i suspect i should RTFS to see exactly how git bisect does its
> > work.
>
> You might want to read
> https://git-scm.com/docs/git-bisect-lk2009.html before reading the
> source code.

  ah, excellent, thanks very much.

rday

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-02-13 13:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-09 19:36 totally confused as to what "git bisect skip" is supposed to do Robert P. J. Day
2018-02-09 19:43 ` Junio C Hamano
2018-02-09 19:51   ` Robert P. J. Day
2018-02-12 10:44   ` Robert P. J. Day
2018-02-12 16:21     ` Christian Couder
2018-02-13 12:28       ` Robert P. J. Day
2018-02-13 12:59         ` Christian Couder
2018-02-13 13:10           ` Robert P. J. Day

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).