Re: [PATCH v2] Fix remote.<remote>.vcs
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:48:07
Daniel Barkalow [off-list ref] writes:
Except that you missed the "remote == NULL" case (noted below), this is what I was thinking of. Acked-by: Daniel Barkalow <redacted>
quoted
if (!remote) die("No remote provided to transport_get()"); ret->remote = remote; + helper = remote->foreign_vcs;Needs to be "helper = remote ? remote->foreign_vcs : NULL", for the same reason that the test below had been "remote && remote->foreign_vcs".
Even in the presense of "if remote is NULL then we die" in the context above?
quoted
if (!url && remote && remote->url) url = remote->url[0]; ret->url = url; - /* In case previous URL had helper forced, reset it. */ - remote->foreign_vcs = NULL; - /* maybe it is a foreign URL? */ if (url) { const char *p = url;@@ -933,11 +932,11 @@ struct transport *transport_get(struct remote *remote, const char *url) while (isalnum(*p)) p++; if (!prefixcmp(p, "::")) - remote->foreign_vcs = xstrndup(url, p - url); + helper = xstrndup(url, p - url); } - if (remote && remote->foreign_vcs) { - transport_helper_init(ret, remote->foreign_vcs); + if (helper) { + transport_helper_init(ret, helper); } else if (!prefixcmp(url, "rsync:")) { ret->get_refs_list = get_refs_via_rsync; ret->fetch = fetch_objs_via_rsync;-- 1.7.0.rc0.19.gb557e6