From: Jeff King Date: Sun, 03 Feb 2008 07:13:18 GMT Subject: Re: [RFH] revision limiting sometimes ignored Message-ID: <20080203071318.GA13849@coredump.intra.peff.net> In-Reply-To: <7vr6fuzgq1.fsf@gitster.siamese.dyndns.org> On Sat, Feb 02, 2008 at 10:39:18PM -0800, Junio C Hamano wrote: > It is not so simple, it appears. If I add for reproducibility > "test_tick" like this: > > commit () { > test_tick && > echo $1 >file && > git commit -a -m $1 && > git tag $1 > } 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 The reason it works with test_tick is that it changes the order we deal with the commits in limit_list. We deal with 'one' _after_ dealing with the uninteresting parents, so we never bail with everybody_uninteresting. > +test_expect_failure 'one is ancestor of others and should not be shown' ' > + > + git rev-list one --not four >result && > + >expect && > + diff -u expect result > + > +' Hooray, test_expect_failure is used properly. But you are still missing a test_done. :) -Peff