diff options
| author | Jeff King <peff@peff.net> | 2024-06-14 06:28:01 -0400 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-06-14 09:34:38 -0700 |
| commit | 8e804415fd3183f56ced0dcc168f8cb4aa790473 (patch) | |
| tree | d5a44014ca781a900782abe13218f3bfec2440ed /builtin/remote.c | |
| parent | 52595c155a66076020a42197c10a32086d7c4ada (diff) | |
| download | git-8e804415fd3183f56ced0dcc168f8cb4aa790473.tar.xz | |
remote: use strvecs to store remote url/pushurl
Now that the url/pushurl fields of "struct remote" own their strings, we
can switch from bare arrays to strvecs. This has a few advantages:
- push/clear are now one-liners
- likewise the free+assigns in alias_all_urls() can use
strvec_replace()
- we now use size_t for storage, avoiding possible overflow
- this will enable some further cleanups in future patches
There's quite a bit of fallout in the code that reads these fields, as
it tends to access these arrays directly. But it's mostly a mechanical
replacement of "url_nr" with "url.nr", and "url[i]" with "url.v[i]",
with a few variations (e.g. "*url" could become "*url.v", but I used
"url.v[0]" for consistency).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/remote.c')
| -rw-r--r-- | builtin/remote.c | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/builtin/remote.c b/builtin/remote.c index 447ef1d3c9..ee6a33ff11 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -619,8 +619,8 @@ static int migrate_file(struct remote *remote) int i; strbuf_addf(&buf, "remote.%s.url", remote->name); - for (i = 0; i < remote->url_nr; i++) - git_config_set_multivar(buf.buf, remote->url[i], "^$", 0); + for (i = 0; i < remote->url.nr; i++) + git_config_set_multivar(buf.buf, remote->url.v[i], "^$", 0); strbuf_reset(&buf); strbuf_addf(&buf, "remote.%s.push", remote->name); for (i = 0; i < remote->push.raw_nr; i++) @@ -1002,8 +1002,8 @@ static int get_remote_ref_states(const char *name, struct transport *transport; const struct ref *remote_refs; - transport = transport_get(states->remote, states->remote->url_nr > 0 ? - states->remote->url[0] : NULL); + transport = transport_get(states->remote, states->remote->url.nr > 0 ? + states->remote->url.v[0] : NULL); remote_refs = transport_get_remote_refs(transport, NULL); states->queried = 1; @@ -1216,12 +1216,12 @@ static int get_one_entry(struct remote *remote, void *priv) const char **url; int i, url_nr; - if (remote->url_nr > 0) { + if (remote->url.nr > 0) { struct strbuf promisor_config = STRBUF_INIT; const char *partial_clone_filter = NULL; strbuf_addf(&promisor_config, "remote.%s.partialclonefilter", remote->name); - strbuf_addf(&remote_info_buf, "%s (fetch)", remote->url[0]); + strbuf_addf(&remote_info_buf, "%s (fetch)", remote->url.v[0]); if (!git_config_get_string_tmp(promisor_config.buf, &partial_clone_filter)) strbuf_addf(&remote_info_buf, " [%s]", partial_clone_filter); @@ -1230,12 +1230,12 @@ static int get_one_entry(struct remote *remote, void *priv) strbuf_detach(&remote_info_buf, NULL); } else string_list_append(list, remote->name)->util = NULL; - if (remote->pushurl_nr) { - url = remote->pushurl; - url_nr = remote->pushurl_nr; + if (remote->pushurl.nr) { + url = remote->pushurl.v; + url_nr = remote->pushurl.nr; } else { - url = remote->url; - url_nr = remote->url_nr; + url = remote->url.v; + url_nr = remote->url.nr; } for (i = 0; i < url_nr; i++) { @@ -1301,14 +1301,14 @@ static int show(int argc, const char **argv, const char *prefix) get_remote_ref_states(*argv, &info.states, query_flag); printf_ln(_("* remote %s"), *argv); - printf_ln(_(" Fetch URL: %s"), info.states.remote->url_nr > 0 ? - info.states.remote->url[0] : _("(no URL)")); - if (info.states.remote->pushurl_nr) { - url = info.states.remote->pushurl; - url_nr = info.states.remote->pushurl_nr; + printf_ln(_(" Fetch URL: %s"), info.states.remote->url.nr > 0 ? + info.states.remote->url.v[0] : _("(no URL)")); + if (info.states.remote->pushurl.nr) { + url = info.states.remote->pushurl.v; + url_nr = info.states.remote->pushurl.nr; } else { - url = info.states.remote->url; - url_nr = info.states.remote->url_nr; + url = info.states.remote->url.v; + url_nr = info.states.remote->url.nr; } for (i = 0; i < url_nr; i++) /* @@ -1454,8 +1454,8 @@ static int prune_remote(const char *remote, int dry_run) printf_ln(_("Pruning %s"), remote); printf_ln(_("URL: %s"), - states.remote->url_nr - ? states.remote->url[0] + states.remote->url.nr + ? states.remote->url.v[0] : _("(no URL)")); for_each_string_list_item(item, &states.stale) @@ -1647,15 +1647,15 @@ static int get_url(int argc, const char **argv, const char *prefix) url_nr = 0; if (push_mode) { - url = remote->pushurl; - url_nr = remote->pushurl_nr; + url = remote->pushurl.v; + url_nr = remote->pushurl.nr; } /* else fetch mode */ /* Use the fetch URL when no push URLs were found or requested. */ if (!url_nr) { - url = remote->url; - url_nr = remote->url_nr; + url = remote->url.v; + url_nr = remote->url.nr; } if (!url_nr) @@ -1718,12 +1718,12 @@ static int set_url(int argc, const char **argv, const char *prefix) if (push_mode) { strbuf_addf(&name_buf, "remote.%s.pushurl", remotename); - urlset = remote->pushurl; - urlset_nr = remote->pushurl_nr; + urlset = remote->pushurl.v; + urlset_nr = remote->pushurl.nr; } else { strbuf_addf(&name_buf, "remote.%s.url", remotename); - urlset = remote->url; - urlset_nr = remote->url_nr; + urlset = remote->url.v; + urlset_nr = remote->url.nr; } /* Special cases that add new entry. */ |
