Re: [RFH] revision limiting sometimes ignored
- From
Jeff King <peff@peff.net>
- Date
- Feb 3, 2008, 07:13 UTC
- 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:
Show 9 quoted lines
> 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 quitThe 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.
Show 7 quoted lines
> +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