From: Junio C Hamano <gitster@pobox.com>
To: "Philip Oakley" <philipoakley@iee.org>
Cc: <git@vger.kernel.org>, "Christian Couder" <christian.couder@gmail.com>
Subject: Re: bisect-helper: we do not bisect --objects
Date: Fri, 03 Mar 2017 15:51:58 -0800 [thread overview]
Message-ID: <xmqqd1dx7wbl.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <D9E30A61FAC84D3B90981B388C9699D0@PhilipOakley> (Philip Oakley's message of "Fri, 3 Mar 2017 23:27:45 -0000")
"Philip Oakley" <philipoakley@iee.org> writes:
> Bikeshedding: If the given boundary is a tag, it could be tagging a
> blob or tree rather than a commit. Would that be a scenario that
> reaches this part of the code?
I do not think it is relevant.
Bisection is an operation over a "bisectable" commit DAG, where
commits can be partitioned into "new" (aka "bad") and "old" (aka
"good") camp, all descendants of a "new" commit are all "new", all
ancestors of an "old" commit are all "old". Think of the "new"-ness
as a 100% inheritable disease that happens spontaneously and without
cure. Once you are infected with "new"-ness, all your descendants
are forever "new". If you know you are free of the "new"-ness, you
know that all your ancestors are not with the "new"-ness, either.
The goal of the operation is to find a "new" commit whose parents
are all "old".
The bisectability of the commit DAG is what allows you to say "this
commit is new" to a commit somewhere in the middle of the history
and avoid having to test any descendants, as they all inherit the
"new"-ness from it (similarly when you have one commit that is
"old", you do not have to test any ancestor), thereby reducing the
number of test from N (all commits in good..bad range) to log(N).
There is no room for a tree or a blob to participate in this graph
partitioning problem. A "bad" tree that is "new" cannot infect its
children with the "new"-ness and a "good" tree cannot guarantee the
lack of "new"-ness of its parents, because a tree or a blob does not
have parent or child commits.
next prev parent reply other threads:[~2017-03-04 0:28 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-03 16:16 bisect-helper: we do not bisect --objects Junio C Hamano
2017-03-03 23:04 ` Christian Couder
2017-03-06 20:21 ` Junio C Hamano
2017-03-03 23:27 ` Philip Oakley
2017-03-03 23:51 ` Junio C Hamano [this message]
2017-03-05 15:05 ` Philip Oakley
2017-03-06 20:22 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqd1dx7wbl.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=philipoakley@iee.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox