diff options
author | Junio C Hamano <junkio@cox.net> | 2006-09-10 04:02:57 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-09-10 13:39:32 -0700 |
commit | fe5ab763f848cfcda22001f9280625f06c4c3760 (patch) | |
tree | 965dbea34df83488fc477b18f9befb081662b439 /builtin-archive.c | |
parent | e0ffb24877d4530208905512f7c91dd8d71e2c95 (diff) | |
download | git-fe5ab763f848cfcda22001f9280625f06c4c3760.tar.gz |
Teach --exec to git-archive --remote
Some people needed --exec to specify the location of the upload-pack
executable, because their default SSH log-in does not include the
directory they have their own private copy of git on the $PATH.
These people need to be able to say --exec to git-archive --remote
for the same reason.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-archive.c')
-rw-r--r-- | builtin-archive.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/builtin-archive.c b/builtin-archive.c index 7544ad3ca1..dd7ffc043d 100644 --- a/builtin-archive.c +++ b/builtin-archive.c @@ -32,16 +32,30 @@ static int run_remote_archiver(const char *remote, int argc, char *url, buf[1024]; int fd[2], i, len, rv; pid_t pid; + const char *exec = "git-upload-archive"; + int exec_at = 0; - sprintf(buf, "git-upload-archive"); + for (i = 1; i < argc; i++) { + const char *arg = argv[i]; + if (!strncmp("--exec=", arg, 7)) { + if (exec_at) + die("multiple --exec specified"); + exec = arg + 7; + exec_at = i; + break; + } + } url = xstrdup(remote); - pid = git_connect(fd, url, buf); + pid = git_connect(fd, url, exec); if (pid < 0) return pid; - for (i = 1; i < argc; i++) + for (i = 1; i < argc; i++) { + if (i == exec_at) + continue; packet_write(fd[1], "argument %s\n", argv[i]); + } packet_flush(fd[1]); len = packet_read_line(fd[0], buf, sizeof(buf)); |