On Thu, Jul 28, 2011 at 10:47:58AM -0600, Jeff King wrote: > Ah, nevermind. I see now; the command-line option interface to "git > archive" is not as rich as what you can pass via write_archive. > > I think you can get around it by adding an option to "git archive" to > indicate that we are filling a remote request, which is the only > extra information that my series adds. And that patch would look something like the one below. You can also now drop the "remote" parameter to write_archive entirely, but I didn't do so here. Applied on top of the merge of your series into next, this passes t5000. -Peff --- diff --git a/builtin/archive.c b/builtin/archive.c index 883c009..6668340 100644 --- a/builtin/archive.c +++ b/builtin/archive.c @@ -85,6 +85,7 @@ int cmd_archive(int argc, const char **argv, const char *prefix) const char *exec = "git-upload-archive"; const char *output = NULL; const char *remote = NULL; + int is_remote = 0; struct option local_opts[] = { OPT_STRING('o', "output", &output, "file", "write the archive to this file"), @@ -92,6 +93,9 @@ int cmd_archive(int argc, const char **argv, const char *prefix) "retrieve the archive from remote repository <repo>"), OPT_STRING(0, "exec", &exec, "cmd", "path to the remote git-upload-archive command"), + { OPTION_BOOLEAN, 0, "remote-request", &is_remote, NULL, + "indicate we are serving a remote request", + PARSE_OPT_NOARG | PARSE_OPT_HIDDEN }, OPT_END() }; @@ -106,5 +110,5 @@ int cmd_archive(int argc, const char **argv, const char *prefix) setvbuf(stderr, NULL, _IOLBF, BUFSIZ); - return write_archive(argc, argv, prefix, 1, output, 0); + return write_archive(argc, argv, prefix, 1, output, is_remote); } diff --git a/builtin/upload-archive.c b/builtin/upload-archive.c index 0c192b5..c57e8bd 100644 --- a/builtin/upload-archive.c +++ b/builtin/upload-archive.c @@ -27,8 +27,9 @@ static void prepare_argv(const char **sent_argv, const char **argv) int len; /* put received options in sent_argv[] */ - sent_argc = 1; + sent_argc = 2; sent_argv[0] = "archive"; + sent_argv[1] = "--remote-request"; for (p = buf;;) { /* This will die if not enough free space in buf */ len = packet_read_line(0, p, (buf + sizeof buf) - p); -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html