diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-01-13 12:30:39 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-01-13 12:30:39 -0800 |
commit | bd33a29283819f1eb1b9ddcb3f1a22c268af8679 (patch) | |
tree | f930e9e156b38ceef4ac3bdccb5cc29ff797461f /builtin-archive.c | |
parent | dc96c5ee703fb7265619b1ecb2b5f2c5ab3ef40d (diff) | |
parent | 27a557a9ff9273ad47aa29c52e9903cf6405f7f7 (diff) | |
download | git-bd33a29283819f1eb1b9ddcb3f1a22c268af8679.tar.gz |
Merge branch 'il/vcs-helper'
* il/vcs-helper:
Reset possible helper before reusing remote structure
Remove special casing of http, https and ftp
Support remote archive from all smart transports
Support remote helpers implementing smart transports
Support taking over transports
Refactor git transport options parsing
Pass unknown protocols to external protocol handlers
Support mandatory capabilities
Add remote helper debug mode
Conflicts:
Documentation/git-remote-helpers.txt
transport-helper.c
Diffstat (limited to 'builtin-archive.c')
-rw-r--r-- | builtin-archive.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/builtin-archive.c b/builtin-archive.c index 446d6bff30..3fb41364a5 100644 --- a/builtin-archive.c +++ b/builtin-archive.c @@ -5,6 +5,7 @@ #include "cache.h" #include "builtin.h" #include "archive.h" +#include "transport.h" #include "parse-options.h" #include "pkt-line.h" #include "sideband.h" @@ -25,12 +26,16 @@ static void create_output_file(const char *output_file) static int run_remote_archiver(int argc, const char **argv, const char *remote, const char *exec) { - char *url, buf[LARGE_PACKET_MAX]; + char buf[LARGE_PACKET_MAX]; int fd[2], i, len, rv; - struct child_process *conn; + struct transport *transport; + struct remote *_remote; - url = xstrdup(remote); - conn = git_connect(fd, url, exec, 0); + _remote = remote_get(remote); + if (!_remote->url[0]) + die("git archive: Remote with no URL"); + transport = transport_get(_remote, _remote->url[0]); + transport_connect(transport, "git-upload-archive", exec, fd); for (i = 1; i < argc; i++) packet_write(fd[1], "argument %s\n", argv[i]); @@ -53,9 +58,7 @@ static int run_remote_archiver(int argc, const char **argv, /* Now, start reading from fd[0] and spit it out to stdout */ rv = recv_sideband("archive", fd[0], 1); - close(fd[0]); - close(fd[1]); - rv |= finish_connect(conn); + rv |= transport_disconnect(transport); return !!rv; } |