On 05/15, Ævar Arnfjörð Bjarmason wrote: > > On Mon, May 14 2018, Brandon Williams wrote: > > > void add_prune_tags_to_fetch_refspec(struct remote *remote) > > { > > - int nr = remote->fetch_refspec_nr; > > - int bufsize = nr + 1; > > - int size = sizeof(struct refspec_item); > > - > > - remote->fetch = xrealloc(remote->fetch, size * bufsize); > > - memcpy(&remote->fetch[nr], tag_refspec, size); > > - add_fetch_refspec(remote, xstrdup(TAG_REFSPEC)); > > + refspec_append(&remote->fetch, TAG_REFSPEC); > > } > > Thanks for fixing the hack I needed to put in place in 97716d217c > ("fetch: add a --prune-tags option and fetch.pruneTags config", > 2018-02-09). > > I'm not sure where it belongs in this series, but I think this makes > sense on top of the whole thing: This actually would work well immediately after this patch, so I'll add it here :) Thanks! > > diff --git a/builtin/fetch.c b/builtin/fetch.c > index af7064dce3..9a523249f5 100644 > --- a/builtin/fetch.c > +++ b/builtin/fetch.c > @@ -1383,7 +1383,8 @@ static int fetch_one(struct remote *remote, int argc, const char **argv, int pru > > maybe_prune_tags = prune_tags_ok && prune_tags; > if (maybe_prune_tags && remote_via_config) > - add_prune_tags_to_fetch_refspec(remote); > + refspec_append(&remote->fetch, TAG_REFSPEC); > + > > if (maybe_prune_tags && (argc || !remote_via_config)) > refspec_append(&rs, TAG_REFSPEC); > diff --git a/remote.c b/remote.c > index 8e6522f4d0..946b95d18d 100644 > --- a/remote.c > +++ b/remote.c > @@ -87,11 +87,6 @@ static void add_fetch_refspec(struct remote *remote, const char *ref) > refspec_append(&remote->fetch, ref); > } > > -void add_prune_tags_to_fetch_refspec(struct remote *remote) > -{ > - refspec_append(&remote->fetch, TAG_REFSPEC); > -} > - > static void add_url(struct remote *remote, const char *url) > { > ALLOC_GROW(remote->url, remote->url_nr + 1, remote->url_alloc); > diff --git a/remote.h b/remote.h > index 9014f707f0..62a6566594 100644 > --- a/remote.h > +++ b/remote.h > @@ -289,6 +289,4 @@ extern int parseopt_push_cas_option(const struct option *, const char *arg, int > extern int is_empty_cas(const struct push_cas_option *); > void apply_push_cas(struct push_cas_option *, struct remote *, struct ref *); > > -void add_prune_tags_to_fetch_refspec(struct remote *remote); > - > #endif > > I.e. the whole reason we have this function is because of my above > commit where I had to very carefully hack around the fact that we didn't > have something which could ALLOW_GROW() the structure after it had been > created. > > So I added the add_prune_tags_to_fetch_refspec() function to very > carefully do *only* that so others wouldn't be tempted to use this hack > more generally. > > But now we have a nice API for it, so we can just throw away the > wrapper, and use the same API everywhere. You already did the other half > of that in your e69b54f53a ("fetch: convert fetch_one to use struct > refspec", 2018-05-11). -- Brandon Williams