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 - 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