On 1/30/12 11:13 AM, Felipe Gomes wrote:
> The following commit
http://hg.mozilla.org/mozilla-central/rev/5e6e63f3aed8 says: "part 23. Set a backup timer to update plugin geometry if we don't manage to do any painting or layout flushes for a while"
>
> By reading the title and the code, this tells me that if I was trying to bisect a problem with plugin painting, and hg bisect took me to part *22*, I wouldn't be able to judge if the problem was caused by bug 598482 or not (because it would need part 23 to work properly). Also, if the problem was not caused by that bug but resulted in a similar behavior of the tree without patch 23, bisect would lead me into the wrong direction.
"Maybe" (in practice, this only matters for a very very rare plugin
painting case). That particular patch queue does have some issues; if I
had done it all from the start, it would have looked somewhat different.
In terms of bisect, this is no different from any two separate bugs
where the first causes a problem and the second fixes it. If you then
bisect something else similar, you have to deal with the fact that it
used to work, then broke, then got fixed, then broke again.... The way
to handle it in this case is that if a bisect lands you in the middle of
the 23-patch queue you then test the before and after changesets for
that queue. If those are both OK, then you need to find some other
point where things broke. If not, then something in that 23-patch queue
broke things but you don't know exactly what (which is all you'd know if
it were flattened).
In this particular case flattening might have made some sense. On the
other hand, having the separate changesets in fact allowed me to bisect
a half dozen or so issues to a particular changeset in there, so on net
I think having it as separate changesets is a win.
> To me, it boils down to the way that the patch queue flattens all the patches in a bug. A bug broken into various patches should actually be a merge
Ideally, yes. hg doesn't have any sane way to do it that way, though.
> as usually you're first interested in which bug introduced a problem, and then you can bisect into the bug to find what caused the regression, as bholley mentioned is very useful (and I believe it was also your point about doing it right).
This approach only works if the merge commit itself is trivial, which is
where hg doesn't really let you create the sort of thing we want here...
-Boris