Re: [RFH] revision limiting sometimes ignored
- From
Jeff King <peff@peff.net>
- Date
- Feb 3, 2008, 07:18 UTC
- Message-ID
- <20080203071833.GA16273@coredump.intra.peff.net>
- In-Reply-To
- <20080203071318.GA13849@coredump.intra.peff.net>
On Sun, Feb 03, 2008 at 02:13:18AM -0500, Jeff King wrote:
Show 11 quoted lines
> Ah. I think what is happening is something like this: > > - when we add 'four' as uninteresting, we mark its parents as > uninteresting in handle_commit > - we don't recursively follow all of its parents because we haven't > parsed them yet > - when we get to limit_list, we call mark_parents_uninteresting again. > But we have already marked four^ as uninteresting, and therefore we > do not recurse in marking > - we add the parents to the list, but they are not interesting, and > therefore we quit
So the "fix" I posted before was to stop bailing on everybody_uninteresting; clearly it is possible that although those commits are uninteresting, we still have work to do on their ancestors. There is probably a performance impact since we will end up traversing the whole commit chain just to mark them all uninteresting.
We could also always recurse in make_parents_uninteresting; I think this has the same performance problem, since we have to parse the parents for each commit.
We could topologically order the commits going into limit_list (it just works most of the time because the date ordering is _mostly_ right). This guarantees that we deal with 'four' before 'one'. But topo sorting is expensive.
-Peff