On Thu, Mar 9, 2017 at 2:29 PM, Jeff King <peff@xxxxxxxx> wrote: > [...] > @@ -1874,6 +1886,8 @@ int filter_refs(struct ref_array *array, struct ref_filter *filter, unsigned int > broken = 1; > filter->kind = type & FILTER_REFS_KIND_MASK; > > + init_contains_cache(&ref_cbdata.contains_cache); > + > /* Simple per-ref filtering */ > [...] > > + clear_contains_cache(&ref_cbdata.contains_cache); > > /* Filters that need revision walking */ > if (filter->merge_commit) Shouldn't both of those be guarded by a "if (filter->with_commit)" test? That init/clear codepath is rather light, but it seems to me that we can avoid it entirely if filter->with_commit isn't defined. I've tested this locally and it still passes all tests.