From: Jakub Narebski <jnareb@gmail.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Christian Couder <christian.couder@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Christian Couder <chriscool@tuxfamily.org>,
git@vger.kernel.org, Sam Vilain <sam@vilain.net>,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH v3 0/3] automatically skip away from broken commits
Date: Tue, 9 Jun 2009 23:55:49 +0200 [thread overview]
Message-ID: <200906092355.51244.jnareb@gmail.com> (raw)
In-Reply-To: <4A2E7BA7.8000901@zytor.com>
On Tue, 9 June 2009, H. Peter Anvin wrote:
> Jakub Narebski wrote:
> >
> > By the way, I have asked question about best algorithm for "bisect skip"
> > on StackOverflow[1], but didn't get (yet) any good responses...
> >
> > [1]: http://stackoverflow.com/questions/959324/
> >
>
> I don't think there is a "best" algorithm, but I concur with the poster
> that said broken commits tend to cluster.
Well, I guess that there might be, at least if we had some reasonable
assumption on probability distribution of bad commits.
Note: the idea sketched below is just handwaving currently...
Let us assume that we are currently at some untestable commit. Let us
also assume that we have some halfway reasonable model of probability
that a given commit is untestable, given it distance from known
untestable commit. "git rev-list --bisect-all" (or its inner equivalent)
would give us list of commits in the searched range, sorted in
descending order by distance from edges (endpoints) of range:
commit "goodness"
--------------------
c21d2e5* (dist=60)
94d6d14 (dist=59)
ccb06f4 (dist=59)
d1a1610 (dist=58)
d4bf4b4 (dist=58)
16c5646 (dist=57)
Let us assume that "c21d2e5" is untestable, and that we can easily
calculate distance from it, substituting 0/0 (undef) if a commit
is not in straight line from "c21d2e5".
commit "goodness" d
-------------------------
c21d2e5* (dist=60) 0
94d6d14 (dist=59) 1
ccb06f4 (dist=59) --
d1a1610 (dist=58) --
d4bf4b4 (dist=58) 2
16c5646 (dist=57) 3
Let us also assume that we have some model of probability that a commit
is untestable. In the example below numbers are ad hoc, and unrealistic.
commit "goodness" d P(untestable)
----------------------------------------
c21d2e5* (dist=60) 0 100%
94d6d14 (dist=59) 1 75%
ccb06f4 (dist=59) -- 0%
d1a1610 (dist=58) -- 0%
d4bf4b4 (dist=58) 2 33%
16c5646 (dist=57) 3 25%
We can now calculate average number of bits of information would bring
(IIRC it was HPA and Christian that was writing about 'average information
gain' and 'bits of information at each step'; I don't quote know how it
is to be calculated)
commit "goodness" d P(untestable) avg. gain
----------------------------------------
c21d2e5* (dist=60) 0 100% 0.0001
94d6d14 (dist=59) 1 75% 0.45
ccb06f4 (dist=59) -- 0% 0.98
d1a1610 (dist=58) -- 0% 0.95
d4bf4b4 (dist=58) 2 33% 0.65
16c5646 (dist=57) 3 25% 0.66
Here 'avg. gain' numbers are totally handwaving... but the idea is to
pick up as next test point the commit with mist average information
gain.
What do you think of this algorithm (after of course it is made into
proper algorithm :-))?
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2009-06-09 21:57 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-06 4:41 [PATCH v3 0/3] automatically skip away from broken commits Christian Couder
2009-06-06 4:41 ` [PATCH v3 1/3] bisect: add parameters to "filter_skipped" Christian Couder
2009-06-06 4:41 ` [PATCH v3 2/3] bisect: when skipping, choose a commit away from a skipped commit Christian Couder
2009-06-06 4:41 ` [PATCH v3 3/3] t6030: test skipping away from an already " Christian Couder
2009-06-06 19:51 ` [PATCH v3 0/3] automatically skip away from broken commits Junio C Hamano
2009-06-07 7:32 ` Christian Couder
2009-06-08 6:06 ` H. Peter Anvin
2009-06-08 7:25 ` Junio C Hamano
2009-06-08 15:51 ` H. Peter Anvin
2009-06-08 21:02 ` Junio C Hamano
2009-06-08 21:10 ` H. Peter Anvin
2009-06-09 4:24 ` Christian Couder
2009-06-09 10:02 ` Jakub Narebski
2009-06-09 15:11 ` H. Peter Anvin
2009-06-09 21:55 ` Jakub Narebski [this message]
2009-06-09 22:54 ` H. Peter Anvin
2009-06-09 12:26 ` Christian Couder
2009-06-09 15:25 ` H. Peter Anvin
2009-06-09 18:35 ` Junio C Hamano
2009-06-09 18:42 ` H. Peter Anvin
2009-06-09 19:28 ` Christian Couder
2009-06-09 19:32 ` H. Peter Anvin
2009-06-10 8:14 ` Christian Couder
2009-06-09 20:37 ` Junio C Hamano
2009-06-10 19:37 ` Christian Couder
2009-06-10 21:17 ` Junio C Hamano
2009-06-10 22:43 ` H. Peter Anvin
2009-06-11 4:02 ` Christian Couder
2009-06-11 4:43 ` H. Peter Anvin
2009-06-11 5:05 ` H. Peter Anvin
2009-06-12 11:56 ` Christian Couder
2009-06-13 19:03 ` H. Peter Anvin
2009-06-13 19:35 ` Jakub Narebski
2009-06-13 19:57 ` H. Peter Anvin
2009-06-15 7:59 ` Christian Couder
2009-06-15 13:16 ` H. Peter Anvin
2009-06-13 7:50 ` Christian Couder
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=200906092355.51244.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hpa@zytor.com \
--cc=mingo@elte.hu \
--cc=sam@vilain.net \
/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;
as well as URLs for NNTP newsgroup(s).