Taylor Blau <me@xxxxxxxxxxxx> writes: > diff --git a/ls-refs.c b/ls-refs.c > index f385938b64..6f490b2d9c 100644 > --- a/ls-refs.c > +++ b/ls-refs.c > @@ -193,7 +193,7 @@ int ls_refs(struct repository *r, struct packet_reader *request) > strvec_push(&data.prefixes, ""); > refs_for_each_fullref_in_prefixes(get_main_ref_store(r), > get_git_namespace(), data.prefixes.v, > - send_ref, &data); > + NULL, send_ref, &data); OK. > diff --git a/ref-filter.c b/ref-filter.c > index d44418efb7..717c3c4bcf 100644 > --- a/ref-filter.c > +++ b/ref-filter.c > @@ -2209,12 +2209,13 @@ static int for_each_fullref_in_pattern(struct ref_filter *filter, > > if (!filter->name_patterns[0]) { > /* no patterns; we have to look at everything */ > - return for_each_fullref_in("", cb, cb_data); > + return refs_for_each_fullref_in(get_main_ref_store(the_repository), > + "", NULL, cb, cb_data); > } Is this merely "while at it", or was there a reason why refs_* variant must be used here? It is curious that we do not teach the exclude_patterns to some functions like for_each_fullref_in() while adding exclude_patterns to others, making the API surface uneven.