threads / discuss / 57982

git bisect outputs list of commits in the wrong order

Subject: git bisect outputs list of commits in the wrong order

## tl;dr

4 messages between Jun 10, 2022 and Jun 10, 2022.

replies: 3people: 3as markdown or json

Volker Weißmann· Jun 10, 2022, 16:01 UTC · lore

If you use `git bisect` and `git bisect skip`, you might get an output like this:

There are only 'skip'ped commits left to test. The first bad commit could be any of: 01f793267a9af328f0f1af2cdb88301a08f007b2 a87784e29411e8b08059fdc79629e64de3002c99 af0df663440796a0580644493c15290405e60ecd 4f34b8cd48e2a814263efb319fe5dbab91215aed f3d91e38a45f0a2ec5affb884d536c9c4e5bb290 13526e1b0e1b11a2e30e44ccf35fbf92ffb61372 abee97622db5301d593265ff6e2009777b09221e b63700f09a422f01d954967b84c5e662881352eb We cannot bisect more!

While the output is correct, I don't like the fact that the commits are not in chronological order. Is there a reason for this? Chronological order makes sense and would make it easier to find the first known bad and the last known good commit.

Junio C Hamano· Jun 10, 2022, 17:28 UTC · re: Volker Weißmann · lore

Re: git bisect outputs list of commits in the wrong order

Volker Weißmann <volker.weissmann@gmx.de> writes:
Show 19 quoted lines
> If you use `git bisect` and `git bisect skip`, you might get an output
> like this:
>
> There are only 'skip'ped commits left to test.
> The first bad commit could be any of:
> 01f793267a9af328f0f1af2cdb88301a08f007b2
> a87784e29411e8b08059fdc79629e64de3002c99
> af0df663440796a0580644493c15290405e60ecd
> 4f34b8cd48e2a814263efb319fe5dbab91215aed
> f3d91e38a45f0a2ec5affb884d536c9c4e5bb290
> 13526e1b0e1b11a2e30e44ccf35fbf92ffb61372
> abee97622db5301d593265ff6e2009777b09221e
> b63700f09a422f01d954967b84c5e662881352eb
> We cannot bisect more!
>
> While the output is correct, I don't like the fact that the commits are
> not in chronological order. Is there a reason for this? Chronological
> order makes sense and would make it easier to find the first known bad
> and the last known good commit.
Thanks for a report.

I looked at an "scripted" version in the ancient past and it seems to have computed by iterating over

	git rev-list bisect/bad --not $good_revs

which would have given these intermediate ones roughly in the reverse chronological order. It could be that the behaviour regressed when the scripted version was rewritten in C, but I dunno.

Christian (as an "area" expert for bisect), do you have any comments?

Thanks.
Jeff King· Jun 10, 2022, 18:11 UTC · re: Junio C Hamano · lore

Re: git bisect outputs list of commits in the wrong order

On Fri, Jun 10, 2022 at 10:28:04AM -0700, Junio C Hamano wrote:
Show 11 quoted lines
> I looked at an "scripted" version in the ancient past and it seems
> to have computed by iterating over
> 
> 	git rev-list bisect/bad --not $good_revs
> 
> which would have given these intermediate ones roughly in the
> reverse chronological order.  It could be that the behaviour
> regressed when the scripted version was rewritten in C, but I dunno.
> 
> Christian (as an "area" expert for bisect), do you have any
> comments?

It would probably be nice to show them as --oneline, as well. I'd guess that a human reading the subjects of a handful of commits could quickly make a good guess as to the actual culprit.

-Peff
Junio C Hamano· Jun 10, 2022, 18:33 UTC · re: Jeff King · lore

Re: git bisect outputs list of commits in the wrong order

Jeff King <peff@peff.net> writes:
Show 17 quoted lines
> On Fri, Jun 10, 2022 at 10:28:04AM -0700, Junio C Hamano wrote:
>
>> I looked at an "scripted" version in the ancient past and it seems
>> to have computed by iterating over
>> 
>> 	git rev-list bisect/bad --not $good_revs
>> 
>> which would have given these intermediate ones roughly in the
>> reverse chronological order.  It could be that the behaviour
>> regressed when the scripted version was rewritten in C, but I dunno.
>> 
>> Christian (as an "area" expert for bisect), do you have any
>> comments?
>
> It would probably be nice to show them as --oneline, as well. I'd guess
> that a human reading the subjects of a handful of commits could quickly
> make a good guess as to the actual culprit.
True, too.

The scripted version fed the output from above iteration each to "show-branch" (as "git log --oneline" was probably not so widely used or may not have been available back then), to make them human readable. We should be able to use pretty.c::pretty_print_commit() with CMT_FMT_ONELINE to do that more easily these days.

By the way, welcome back ;-)

← back to recent threads