fetch: refactor verbosity option handling into transport.[ch]
[gitweb.git] / transport.c
index 7714fdb6c6578c711dc0b98a2086669a6a797257..1632c4d0aab3195ee79a60b5dc44ab7c29cc10a4 100644 (file)
@@ -912,20 +912,19 @@ static int external_specification_len(const char *url)
 
 struct transport *transport_get(struct remote *remote, const char *url)
 {
+       const char *helper;
        struct transport *ret = xcalloc(1, sizeof(*ret));
 
        if (!remote)
                die("No remote provided to transport_get()");
 
        ret->remote = remote;
+       helper = remote->foreign_vcs;
 
-       if (!url && remote && remote->url)
+       if (!url && 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;
@@ -1014,6 +1013,14 @@ int transport_set_option(struct transport *transport,
        return 1;
 }
 
+void transport_set_verbosity(struct transport *transport, int verbosity)
+{
+       if (verbosity >= 2)
+               transport->verbose = verbosity <= 3 ? verbosity : 3;
+       if (verbosity < 0)
+               transport->verbose = -1;
+}
+
 int transport_push(struct transport *transport,
                   int refspec_nr, const char **refspec, int flags,
                   int *nonfastforward)