Re: git-bisect problem
From: Petr Baudis <hidden>
Date: 2016-06-15 22:42:19
Dear diary, on Tue, Feb 14, 2006 at 02:15:12AM CET, I got a letter where Petr Baudis [off-list ref] said that...
Dear diary, on Tue, Feb 14, 2006 at 01:56:20AM CET, I got a letter where Andrew Morton [off-list ref] said that...quoted
Junio C Hamano [off-list ref] wrote:quoted
Sorry, this question is what I do not quite understand. Here is my understanding of the situation. - Betweeen 2.6.16-rc1 and 2.6.16-rc2 a bug you are chasing was introduced. You know rc1 works fine but rc2 is bad. - You suspect that changes introduced by merging Jeff's tree at some point between -rc1 and -rc2 may be causing this. Am I totally misunderstanding the situation?yup ;) The bug is in Jeff's tree only (git+ssh://master.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git#ALL) so I wanted to perform the bisection on the git-netdev-all branch. So I did a `git log git-netdev-all' and looked at where the ipw2200 changes were and then decided that the 2.6.16-rc1 and 2.6.16-rc2 commits straddled those changes nicely, so I chose those as the bisection starting points.But aren't those commits on the Linus' "branch", not containing any commits specific to git-netdev-all? I imagine the situation is like: * -- 2.6.16-rc1 -- * -- * -- 2.6.16-rc2 -- * - - (linus) \ \ \ * -- * -- * -- * -- * -- * -- * -- * -- * -- M - - (git-netdev-all) Then, if you bisect between -rc2 and -rc1, you will never actually get to the git-netdev-all branch, since there are no such commits inbetween -rc2 and -rc1. Even if you consider this: * -- 2.6.16-rc1 -- * -- * -- 2.6.16-rc2 -- * - - (linus) \ / \ \ * -- X -- Y -- Z -- A -- * -- * -- * -- * -- M - - (git-netdev-all) git-bisect will consider the X, Y, Z commits (since they are part of the ancestry between -rc and -rc2), but not commits from A on - it can't reach them topologically if it considers only commits between -rc1 and -rc2: * -- 2.6.16-rc1 -- * -- * -- 2.6.16-rc2 \ / - X -- Y -- Z
I got this one (and consequently, the following one) wrong - obviously,
it should read as
2.6.16-rc1 -- * -- * -- 2.6.16-rc2
/
X -- Y -- Z
since the "asterisk" commit is already behind -rc1.
Pedagogical excursion:
All those commit intervals are really set differences - if you have
commit A and commit B,
[A,B] = B \cup (ancestry(B) \ ancestry(A))
or if you don't like math, color B and all its ancestors blue in
your head, and then color all the A ancestors black. The commits
that stay blue are in the [A,B] interval.
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Of the 3 great composers Mozart tells us what it's like to be human,
Beethoven tells us what it's like to be Beethoven and Bach tells us
what it's like to be the universe. -- Douglas Adams