]> git.ipfire.org Git - thirdparty/git.git/blobdiff - builtin-archive.c
Teach --exec to git-archive --remote
[thirdparty/git.git] / builtin-archive.c
index 7544ad3ca1a69b7bd0a9026e03405003d002cf43..dd7ffc043d48c5480f90905e812f615cd4895feb 100644 (file)
@@ -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));