On Sun, Feb 03, 2008 at 02:13:18AM -0500, Jeff King wrote: > 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 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html