> > + /*
> > + * We can avoid listing refs if all of them are exact
> > + * OIDs
> > + */
> > + must_list_refs = 0;
> > + for (i = 0; i < rs->nr; i++) {
> > + if (!rs->items[i].exact_sha1) {
> > + must_list_refs = 1;
> > + break;
> > + }
> > + }
>
> This seems to be a repeat pattern, Is it worth it to encapsulate it
> as a function in transport or refs?
>
> int must_list_refs(struct ref **to_fetch)
> {
> // body as the loop above
> }
The repetition is unfortunate - I tried to think of a better way to do
it but couldn't. We can't do what you suggest because this one loops
over refspecs but the other one loops over refs.