Code

Test for packed tags in git-describe output
[git.git] / transport.c
index 397983d1155bed967bd48ad47dbbb81cb2e45168..166c1d1d46d954653b50897ca49678bd21f6bdfb 100644 (file)
@@ -442,7 +442,8 @@ static struct ref *get_refs_via_curl(struct transport *transport)
        struct ref *last_ref = NULL;
 
        if (!transport->data)
-               transport->data = get_http_walker(transport->url);
+               transport->data = get_http_walker(transport->url,
+                                               transport->remote);
 
        refs_url = xmalloc(strlen(transport->url) + 11);
        sprintf(refs_url, "%s/info/refs", transport->url);
@@ -453,9 +454,6 @@ static struct ref *get_refs_via_curl(struct transport *transport)
        curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_buffer);
        curl_easy_setopt(slot->curl, CURLOPT_URL, refs_url);
        curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, NULL);
-       if (transport->remote->http_proxy)
-               curl_easy_setopt(slot->curl, CURLOPT_PROXY,
-                                transport->remote->http_proxy);
 
        if (start_active_slot(slot)) {
                run_active_slot(slot);
@@ -509,7 +507,8 @@ static int fetch_objs_via_curl(struct transport *transport,
                                 int nr_objs, struct ref **to_fetch)
 {
        if (!transport->data)
-               transport->data = get_http_walker(transport->url);
+               transport->data = get_http_walker(transport->url,
+                                               transport->remote);
        return fetch_objs_via_walker(transport, nr_objs, to_fetch);
 }
 
@@ -622,6 +621,7 @@ static int fetch_refs_via_pack(struct transport *transport,
        char *dest = xstrdup(transport->url);
        struct fetch_pack_args args;
        int i;
+       struct ref *refs_tmp = NULL;
 
        memset(&args, 0, sizeof(args));
        args.uploadpack = data->uploadpack;
@@ -634,15 +634,13 @@ static int fetch_refs_via_pack(struct transport *transport,
        for (i = 0; i < nr_heads; i++)
                origh[i] = heads[i] = xstrdup(to_fetch[i]->name);
 
-       refs = transport_get_remote_refs(transport);
        if (!data->conn) {
-               struct ref *refs_tmp;
                connect_setup(transport);
                get_remote_heads(data->fd[0], &refs_tmp, 0, NULL, 0);
-               free_refs(refs_tmp);
        }
 
-       refs = fetch_pack(&args, data->fd, data->conn, transport->remote_refs,
+       refs = fetch_pack(&args, data->fd, data->conn,
+                         refs_tmp ? refs_tmp : transport->remote_refs,
                          dest, nr_heads, heads, &transport->pack_lockfile);
        close(data->fd[0]);
        close(data->fd[1]);
@@ -650,6 +648,8 @@ static int fetch_refs_via_pack(struct transport *transport,
                refs = NULL;
        data->conn = NULL;
 
+       free_refs(refs_tmp);
+
        for (i = 0; i < nr_heads; i++)
                free(origh[i]);
        free(origh);