]> asedeno.scripts.mit.edu Git - git.git/blobdiff - transport-helper.c
Support remote archive from all smart transports
[git.git] / transport-helper.c
index 50b3bac0c45252855505f4ce019a8cec53164fad..6ece0d9875652e5d648be7e18ddf2084c564fc12 100644 (file)
@@ -467,6 +467,24 @@ static int process_connect(struct transport *transport,
        return process_connect_service(transport, name, exec);
 }
 
+static int connect_helper(struct transport *transport, const char *name,
+                  const char *exec, int fd[2])
+{
+       struct helper_data *data = transport->data;
+
+       /* Get_helper so connect is inited. */
+       get_helper(transport);
+       if (!data->connect)
+               die("Operation not supported by protocol.");
+
+       if (!process_connect_service(transport, name, exec))
+               die("Can't connect to subservice %s.", name);
+
+       fd[0] = data->helper->out;
+       fd[1] = data->helper->in;
+       return 0;
+}
+
 static int fetch(struct transport *transport,
                 int nr_heads, struct ref **to_fetch)
 {
@@ -711,6 +729,7 @@ int transport_helper_init(struct transport *transport, const char *name)
        transport->fetch = fetch;
        transport->push_refs = push_refs;
        transport->disconnect = release_helper;
+       transport->connect = connect_helper;
        transport->smart_options = &(data->transport_options);
        return 0;
 }