{"thread":{"id":"5441","subject":"[PATCH 0/3] git-daemon: plug new upload-tar command","startedAt":"2006-08-31T12:35:20Z","lastAt":"2006-09-02T20:12:53Z","messageCount":11,"participants":["Franck Bui-Huu","Rene Scharfe","Junio C Hamano","Jakub Narebski"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"26139","messageId":"11570277231100-git-send-email-vagabon.xyz@gmail.com","threadId":"5441","inReplyTo":null,"subject":"[PATCH 0/3] git-daemon: plug new upload-tar command","fromName":"Franck Bui-Huu","fromEmail":"vagabon.xyz@gmail.com","sentAt":"2006-08-31T12:35:20Z","receivedAt":"2006-08-31T12:35:20Z","isPatch":true,"sender":{"key":"vagabon.xyz@gmail.com","avatar":null},"body":"Here's a simple patchset that basically teach git-daemon about the\nupload-tar command added by Junio's commit:\n\n217542640ed219c980fff2b3c307c4520120f20f\n\nWith a patched daemon it's now possible to do:\n\n$ git tar-tree --remote=git://host/path/to/repo HEAD > repo.tar\n\nIt also creates a 'service' structure to ease future command\nintegration (like git internal commands handling does). I'm not sure\nhow usefull it will be, but it improves at least code readability.\n\nSomething that may be usefull now is to make git-daemon able to\ncompress data it sends back...\n\n\n\t\tFranck\n---\n\n builtin-tar-tree.c |    2 +\n daemon.c           |   85 ++++++++++++++++++++++++++++++++++++++++++----------\n git.c              |    2 +\n 3 files changed, 71 insertions(+), 18 deletions(-)\n"},{"id":"26141","messageId":"1157027723594-git-send-email-vagabon.xyz@gmail.com","threadId":"5441","inReplyTo":"11570277231100-git-send-email-vagabon.xyz@gmail.com","subject":"[PATCH 1/3] daemon.c: introduce daemon's service","fromName":"Franck Bui-Huu","fromEmail":"vagabon.xyz@gmail.com","sentAt":"2006-08-31T12:35:21Z","receivedAt":"2006-08-31T12:35:21Z","isPatch":true,"sender":{"key":"vagabon.xyz@gmail.com","avatar":null},"body":"Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>\n---\n daemon.c |   78 ++++++++++++++++++++++++++++++++++++++++++++++++--------------\n 1 files changed, 61 insertions(+), 17 deletions(-)\n\ndiff --git a/daemon.c b/daemon.c\nindex 66ec830..ed3a13d 100644\n--- a/daemon.c\n+++ b/daemon.c\n@@ -232,16 +232,57 @@ static char *path_ok(char *dir)\n \treturn NULL;\t\t/* Fallthrough. Deny by default */\n }\n \n-static int upload(char *dir)\n+/*\n+ * Services we're able to deal with.\n+ */\n+static int service_upload_pack(const char *dir, const char *args)\n {\n \t/* Timeout as string */\n \tchar timeout_buf[64];\n+\n+\tsnprintf(timeout_buf, sizeof timeout_buf, \"--timeout=%u\", timeout);\n+\n+\t/* git-upload-pack only ever reads stuff, so this is safe */\n+\texecl_git_cmd(\"upload-pack\", \"--strict\", timeout_buf, \".\", NULL);\n+\treturn -1;\n+}\n+\n+/* service options */\n+#define NEED_REPO\t(1<<0)\n+\n+struct service_info {\n+\tconst char *name;\n+\tint (*fn)(const char *dir, const char *args);\n+\tint options;\n+};\n+\n+static struct service_info services[] = {\n+\t{ \"git-upload-pack\", service_upload_pack, NEED_REPO },\n+};\n+\n+static int run_service(char *cmdline)\n+{\n+\tstruct service_info *serv;\n \tconst char *path;\n+\tsize_t len;\n+\tint i;\n \n-\tloginfo(\"Request for '%s'\", dir);\n+\tfor (i = 0; i < ARRAY_SIZE(services); i++) {\n+\t\tserv = &services[i];\n+\t\t\n+\t\tlen = strlen(serv->name);\n+\t\tif (strncmp(cmdline, serv->name, len))\n+\t\t\tcontinue;\n+\t\tif (cmdline[len] != ' ')\n+\t\t\tcontinue;\n+\t\tgoto found;\n+\t}\n+\treturn -1;\n+found:\n+\tcmdline += len + 1;\n+\tpath = NULL;\n \n-\tif (!(path = path_ok(dir)))\n-\t\treturn -1;\n+\tloginfo(\"Request '%s' for '%s'\", serv->name, cmdline);\n \n \t/*\n \t * Security on the cheap.\n@@ -253,30 +294,33 @@ static int upload(char *dir)\n \t * path_ok() uses enter_repo() and does whitelist checking.\n \t * We only need to make sure the repository is exported.\n \t */\n+\tif (serv->options & NEED_REPO) {\n+\t\tif (!(path = path_ok(cmdline)))\n+\t\t\treturn -1;\n \n-\tif (!export_all_trees && access(\"git-daemon-export-ok\", F_OK)) {\n-\t\tlogerror(\"'%s': repository not exported.\", path);\n-\t\terrno = EACCES;\n-\t\treturn -1;\n+\t\tif (!export_all_trees && access(\"git-daemon-export-ok\", F_OK)) {\n+\t\t\tlogerror(\"'%s': repository not exported.\", path);\n+\t\t\terrno = EACCES;\n+\t\t\treturn -1;\n+\t\t}\n+\t\tcmdline += strlen(path) + 1;\n \t}\n-\n+\t\n \t/*\n \t * We'll ignore SIGTERM from now on, we have a\n \t * good client.\n \t */\n \tsignal(SIGTERM, SIG_IGN);\n \n-\tsnprintf(timeout_buf, sizeof timeout_buf, \"--timeout=%u\", timeout);\n+\treturn serv->fn(path, cmdline);\n \n-\t/* git-upload-pack only ever reads stuff, so this is safe */\n-\texecl_git_cmd(\"upload-pack\", \"--strict\", timeout_buf, \".\", NULL);\n-\treturn -1;\n }\n \n static int execute(struct sockaddr *addr)\n {\n \tstatic char line[1000];\n \tint pktlen, len;\n+\tint rv;\n \n \tif (addr) {\n \t\tchar addrbuf[256] = \"\";\n@@ -313,11 +357,11 @@ #endif\n \tif (len && line[len-1] == '\\n')\n \t\tline[--len] = 0;\n \n-\tif (!strncmp(\"git-upload-pack \", line, 16))\n-\t\treturn upload(line+16);\n+\trv = run_service(line);\n+\tif (rv < 0)\n+\t\tlogerror(\"Protocol error: '%s'\", line);\n \n-\tlogerror(\"Protocol error: '%s'\", line);\n-\treturn -1;\n+\treturn rv;\n }\n \n \n-- \n1.4.2\n"},{"id":"26142","messageId":"11570277232250-git-send-email-vagabon.xyz@gmail.com","threadId":"5441","inReplyTo":"11570277231100-git-send-email-vagabon.xyz@gmail.com","subject":"[PATCH 2/3] daemon.c: added upload-tar service","fromName":"Franck Bui-Huu","fromEmail":"vagabon.xyz@gmail.com","sentAt":"2006-08-31T12:35:22Z","receivedAt":"2006-08-31T12:35:22Z","isPatch":true,"sender":{"key":"vagabon.xyz@gmail.com","avatar":null},"body":"Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>\n---\n daemon.c |    7 +++++++\n 1 files changed, 7 insertions(+), 0 deletions(-)\n\ndiff --git a/daemon.c b/daemon.c\nindex ed3a13d..381e6ae 100644\n--- a/daemon.c\n+++ b/daemon.c\n@@ -247,6 +247,12 @@ static int service_upload_pack(const cha\n \treturn -1;\n }\n \n+static int service_upload_tar(const char *dir, const char *args)\n+{\n+\texecl_git_cmd(\"upload-tar\", dir, NULL);\n+\treturn -1;\n+}\n+\n /* service options */\n #define NEED_REPO\t(1<<0)\n \n@@ -258,6 +264,7 @@ struct service_info {\n \n static struct service_info services[] = {\n \t{ \"git-upload-pack\", service_upload_pack, NEED_REPO },\n+\t{ \"git-upload-tar\", service_upload_tar, NEED_REPO },\n };\n \n static int run_service(char *cmdline)\n-- \n1.4.2\n"},{"id":"26140","messageId":"11570277232555-git-send-email-vagabon.xyz@gmail.com","threadId":"5441","inReplyTo":"11570277231100-git-send-email-vagabon.xyz@gmail.com","subject":"[PATCH 3/3] git-tar-tree.c: no need to be in a git repo when using --remote","fromName":"Franck Bui-Huu","fromEmail":"vagabon.xyz@gmail.com","sentAt":"2006-08-31T12:35:23Z","receivedAt":"2006-08-31T12:35:23Z","isPatch":true,"sender":{"key":"vagabon.xyz@gmail.com","avatar":null},"body":"Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>\n---\n builtin-tar-tree.c |    2 ++\n git.c              |    2 +-\n 2 files changed, 3 insertions(+), 1 deletions(-)\n\ndiff --git a/builtin-tar-tree.c b/builtin-tar-tree.c\nindex 61a4135..ad1a8a6 100644\n--- a/builtin-tar-tree.c\n+++ b/builtin-tar-tree.c\n@@ -390,6 +390,8 @@ int cmd_tar_tree(int argc, const char **\n \t\tusage(tar_tree_usage);\n \tif (!strncmp(\"--remote=\", argv[1], 9))\n \t\treturn remote_tar(argc, argv);\n+\tif (prefix == NULL)\n+\t\tprefix = setup_git_directory();\n \treturn generate_tar(argc, argv, prefix);\n }\n \ndiff --git a/git.c b/git.c\nindex bd07289..c323d30 100644\n--- a/git.c\n+++ b/git.c\n@@ -262,7 +262,7 @@ static void handle_internal_command(int \n \t\t{ \"show\", cmd_show, RUN_SETUP | USE_PAGER },\n \t\t{ \"stripspace\", cmd_stripspace },\n \t\t{ \"symbolic-ref\", cmd_symbolic_ref, RUN_SETUP },\n-\t\t{ \"tar-tree\", cmd_tar_tree, RUN_SETUP },\n+\t\t{ \"tar-tree\", cmd_tar_tree },\n \t\t{ \"zip-tree\", cmd_zip_tree, RUN_SETUP },\n \t\t{ \"unpack-objects\", cmd_unpack_objects, RUN_SETUP },\n \t\t{ \"update-index\", cmd_update_index, RUN_SETUP },\n-- \n1.4.2\n"},{"id":"26143","messageId":"44F6DEF4.6000609@innova-card.com","threadId":"5441","inReplyTo":"1157027723594-git-send-email-vagabon.xyz@gmail.com","subject":"Re: [PATCH 1/3] daemon.c: introduce daemon's service","fromName":"Franck Bui-Huu","fromEmail":"vagabon.xyz@gmail.com","sentAt":"2006-08-31T13:07:00Z","receivedAt":"2006-08-31T13:07:00Z","isPatch":true,"sender":{"key":"vagabon.xyz@gmail.com","avatar":null},"body":"Franck Bui-Huu wrote:\n> Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>\n> ---\n>  daemon.c |   78 ++++++++++++++++++++++++++++++++++++++++++++++++--------------\n>  1 files changed, 61 insertions(+), 17 deletions(-)\n> \n> diff --git a/daemon.c b/daemon.c\n> index 66ec830..ed3a13d 100644\n> --- a/daemon.c\n> +++ b/daemon.c\n> @@ -232,16 +232,57 @@ static char *path_ok(char *dir)\n>  \treturn NULL;\t\t/* Fallthrough. Deny by default */\n>  }\n>  \n> -static int upload(char *dir)\n> +/*\n> + * Services we're able to deal with.\n> + */\n> +static int service_upload_pack(const char *dir, const char *args)\n>  {\n>  \t/* Timeout as string */\n>  \tchar timeout_buf[64];\n> +\n> +\tsnprintf(timeout_buf, sizeof timeout_buf, \"--timeout=%u\", timeout);\n> +\n> +\t/* git-upload-pack only ever reads stuff, so this is safe */\n> +\texecl_git_cmd(\"upload-pack\", \"--strict\", timeout_buf, \".\", NULL);\n> +\treturn -1;\n> +}\n> +\n> +/* service options */\n> +#define NEED_REPO\t(1<<0)\n> +\n> +struct service_info {\n> +\tconst char *name;\n> +\tint (*fn)(const char *dir, const char *args);\n> +\tint options;\n> +};\n> +\n> +static struct service_info services[] = {\n> +\t{ \"git-upload-pack\", service_upload_pack, NEED_REPO },\n> +};\n> +\n> +static int run_service(char *cmdline)\n> +{\n> +\tstruct service_info *serv;\n>  \tconst char *path;\n> +\tsize_t len;\n> +\tint i;\n>  \n> -\tloginfo(\"Request for '%s'\", dir);\n> +\tfor (i = 0; i < ARRAY_SIZE(services); i++) {\n> +\t\tserv = &services[i];\n> +\t\t\n\nOMG, trailing white spaces !\n\n> +\t\tlen = strlen(serv->name);\n> +\t\tif (strncmp(cmdline, serv->name, len))\n> +\t\t\tcontinue;\n> +\t\tif (cmdline[len] != ' ')\n> +\t\t\tcontinue;\n> +\t\tgoto found;\n> +\t}\n> +\treturn -1;\n> +found:\n> +\tcmdline += len + 1;\n> +\tpath = NULL;\n>  \n> -\tif (!(path = path_ok(dir)))\n> -\t\treturn -1;\n> +\tloginfo(\"Request '%s' for '%s'\", serv->name, cmdline);\n>  \n>  \t/*\n>  \t * Security on the cheap.\n> @@ -253,30 +294,33 @@ static int upload(char *dir)\n>  \t * path_ok() uses enter_repo() and does whitelist checking.\n>  \t * We only need to make sure the repository is exported.\n>  \t */\n> +\tif (serv->options & NEED_REPO) {\n> +\t\tif (!(path = path_ok(cmdline)))\n> +\t\t\treturn -1;\n>  \n> -\tif (!export_all_trees && access(\"git-daemon-export-ok\", F_OK)) {\n> -\t\tlogerror(\"'%s': repository not exported.\", path);\n> -\t\terrno = EACCES;\n> -\t\treturn -1;\n> +\t\tif (!export_all_trees && access(\"git-daemon-export-ok\", F_OK)) {\n> +\t\t\tlogerror(\"'%s': repository not exported.\", path);\n> +\t\t\terrno = EACCES;\n> +\t\t\treturn -1;\n> +\t\t}\n> +\t\tcmdline += strlen(path) + 1;\n>  \t}\n> -\n> +\t\n\nditto\n\n\t\tFranck\n"},{"id":"26148","messageId":"44F6FD2F.5080707@innova-card.com","threadId":"5441","inReplyTo":"44F6DEF4.6000609@innova-card.com","subject":"[PATCH 1/3] daemon.c: introduce daemon's service [take #2]","fromName":"Franck Bui-Huu","fromEmail":"vagabon.xyz@gmail.com","sentAt":"2006-08-31T15:15:59Z","receivedAt":"2006-08-31T15:15:59Z","isPatch":true,"sender":{"key":"vagabon.xyz@gmail.com","avatar":null},"body":"\nSigned-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>\n---\n daemon.c |   77 ++++++++++++++++++++++++++++++++++++++++++++++++--------------\n 1 files changed, 60 insertions(+), 17 deletions(-)\n\ndiff --git a/daemon.c b/daemon.c\nindex 66ec830..f5f6927 100644\n--- a/daemon.c\n+++ b/daemon.c\n@@ -232,16 +232,57 @@ static char *path_ok(char *dir)\n \treturn NULL;\t\t/* Fallthrough. Deny by default */\n }\n \n-static int upload(char *dir)\n+/*\n+ * Services we're able to deal with.\n+ */\n+static int service_upload_pack(const char *dir, const char *args)\n {\n \t/* Timeout as string */\n \tchar timeout_buf[64];\n+\n+\tsnprintf(timeout_buf, sizeof timeout_buf, \"--timeout=%u\", timeout);\n+\n+\t/* git-upload-pack only ever reads stuff, so this is safe */\n+\texecl_git_cmd(\"upload-pack\", \"--strict\", timeout_buf, \".\", NULL);\n+\treturn -1;\n+}\n+\n+/* service options */\n+#define NEED_REPO\t(1<<0)\n+\n+struct service_info {\n+\tconst char *name;\n+\tint (*fn)(const char *dir, const char *args);\n+\tint options;\n+};\n+\n+static struct service_info services[] = {\n+\t{ \"git-upload-pack\", service_upload_pack, NEED_REPO },\n+};\n+\n+static int run_service(char *cmdline)\n+{\n+\tstruct service_info *serv;\n \tconst char *path;\n+\tsize_t len;\n+\tint i;\n \n-\tloginfo(\"Request for '%s'\", dir);\n+\tfor (i = 0; i < ARRAY_SIZE(services); i++) {\n+\t\tserv = &services[i];\n \n-\tif (!(path = path_ok(dir)))\n-\t\treturn -1;\n+\t\tlen = strlen(serv->name);\n+\t\tif (strncmp(cmdline, serv->name, len))\n+\t\t\tcontinue;\n+\t\tif (cmdline[len] != ' ')\n+\t\t\tcontinue;\n+\t\tgoto found;\n+\t}\n+\treturn -1;\n+found:\n+\tcmdline += len + 1;\n+\tpath = NULL;\n+\n+\tloginfo(\"Request '%s' for '%s'\", serv->name, cmdline);\n \n \t/*\n \t * Security on the cheap.\n@@ -253,11 +294,16 @@ static int upload(char *dir)\n \t * path_ok() uses enter_repo() and does whitelist checking.\n \t * We only need to make sure the repository is exported.\n \t */\n+\tif (serv->options & NEED_REPO) {\n+\t\tif (!(path = path_ok(cmdline)))\n+\t\t\treturn -1;\n \n-\tif (!export_all_trees && access(\"git-daemon-export-ok\", F_OK)) {\n-\t\tlogerror(\"'%s': repository not exported.\", path);\n-\t\terrno = EACCES;\n-\t\treturn -1;\n+\t\tif (!export_all_trees && access(\"git-daemon-export-ok\", F_OK)) {\n+\t\t\tlogerror(\"'%s': repository not exported.\", path);\n+\t\t\terrno = EACCES;\n+\t\t\treturn -1;\n+\t\t}\n+\t\tcmdline += strlen(path) + 1;\n \t}\n \n \t/*\n@@ -266,17 +312,14 @@ static int upload(char *dir)\n \t */\n \tsignal(SIGTERM, SIG_IGN);\n \n-\tsnprintf(timeout_buf, sizeof timeout_buf, \"--timeout=%u\", timeout);\n-\n-\t/* git-upload-pack only ever reads stuff, so this is safe */\n-\texecl_git_cmd(\"upload-pack\", \"--strict\", timeout_buf, \".\", NULL);\n-\treturn -1;\n+\treturn serv->fn(path, cmdline);\n }\n \n static int execute(struct sockaddr *addr)\n {\n \tstatic char line[1000];\n \tint pktlen, len;\n+\tint rv;\n \n \tif (addr) {\n \t\tchar addrbuf[256] = \"\";\n@@ -313,11 +356,11 @@ #endif\n \tif (len && line[len-1] == '\\n')\n \t\tline[--len] = 0;\n \n-\tif (!strncmp(\"git-upload-pack \", line, 16))\n-\t\treturn upload(line+16);\n+\trv = run_service(line);\n+\tif (rv < 0)\n+\t\tlogerror(\"Protocol error: '%s'\", line);\n \n-\tlogerror(\"Protocol error: '%s'\", line);\n-\treturn -1;\n+\treturn rv;\n }\n \n \n-- \n1.4.2\n"},{"id":"26155","messageId":"44F72039.3040206@lsrfire.ath.cx","threadId":"5441","inReplyTo":"11570277231100-git-send-email-vagabon.xyz@gmail.com","subject":"Re: [PATCH 0/3] git-daemon: plug new upload-tar command","fromName":"Rene Scharfe","fromEmail":"rene.scharfe@lsrfire.ath.cx","sentAt":"2006-08-31T17:45:29Z","receivedAt":"2006-08-31T17:45:29Z","isPatch":true,"sender":{"key":"l.s.r@web.de","avatar":"https://avatars.githubusercontent.com/u/26122331?v=4"},"body":"Hi,\n\nFranck Bui-Huu schrieb:\n> Here's a simple patchset that basically teach git-daemon about the \n> upload-tar command added by Junio's commit:\n\nJunio has similar code in the 'next' branch.  And he correctly pointed\nout that with the arrival of git-zip-tree the time has come to think\nabout a format independent tree-to-archive converter command to avoid\nre-implementing essentially the same thing under the names of\ngit-upload-zip, git-upload-rar etc.\n\nI'm trying for a few days now to find time for implementing a\ngit-archive command, but I'm failing.  And I won't be able to do so\nbefore the weekend (at least).\n\nI propose to make the command line syntax more similar to the one of\ngit-ls-tree (e.g. --prefix instead of optional second non-option\nparameter for base dir, support for path specs).  In a previous mail I\nalso proposed to merge the upload command into git-archive, but now that\nI thought a bit about it it doesn't make sense to me anymore.\n\nSo if you beat me to it, that would be great.  Or if you have a better\nidea, that would be also great. :-)\n\nI have to go now..\n\nRené\n"},{"id":"26206","messageId":"cda58cb80609020114h1e1ee553saf5aa90df8bc3ba0@mail.gmail.com","threadId":"5441","inReplyTo":"44F72039.3040206@lsrfire.ath.cx","subject":"Re: [PATCH 0/3] git-daemon: plug new upload-tar command","fromName":"Franck Bui-Huu","fromEmail":"vagabon.xyz@gmail.com","sentAt":"2006-09-02T08:14:50Z","receivedAt":"2006-09-02T08:14:50Z","isPatch":true,"sender":{"key":"vagabon.xyz@gmail.com","avatar":null},"body":"Hi,\n\n2006/8/31, Rene Scharfe <rene.scharfe@lsrfire.ath.cx>:\n> Junio has similar code in the 'next' branch.  And he correctly pointed\n\nduh, wasn't aware of it. :(\n\n> out that with the arrival of git-zip-tree the time has come to think\n> about a format independent tree-to-archive converter command to avoid\n> re-implementing essentially the same thing under the names of\n> git-upload-zip, git-upload-rar etc.\n>\n\nThat would make sense if you're going to implement any possible\narchive formats ;)\n\n> I'm trying for a few days now to find time for implementing a\n> git-archive command, but I'm failing.  And I won't be able to do so\n> before the weekend (at least).\n>\n> I propose to make the command line syntax more similar to the one of\n> git-ls-tree (e.g. --prefix instead of optional second non-option\n> parameter for base dir, support for path specs).  In a previous mail I\n> also proposed to merge the upload command into git-archive, but now that\n> I thought a bit about it it doesn't make sense to me anymore.\n>\n\nMaybe it's time for a \"upload-archive\" that would implement a common\ngit archiver protocol used by all git-{zip,tar,..}-tree. And by that\ntime move git-tar-tree protocol stuff into git-archive.\n\n> So if you beat me to it, that would be great.  Or if you have a better\n> idea, that would be also great. :-)\n>\n\nWell I'll try to start something, not sure to have a lot of time\nthough. Please contact me before starting anything, I would be sad to\nwrite something for /dev/null again ;)\n\nOne point would make git-tar-tree able to compress data and git-daemon\nwould refuse any requests for a non compressed archive format.\n\n-- \n               Franck\n\n-- \nVGER BF report: U 0.499999\n"},{"id":"26211","messageId":"7vfyfa1rvf.fsf@assigned-by-dhcp.cox.net","threadId":"5441","inReplyTo":"cda58cb80609020114h1e1ee553saf5aa90df8bc3ba0@mail.gmail.com","subject":"Re: [PATCH 0/3] git-daemon: plug new upload-tar command","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-09-02T10:32:04Z","receivedAt":"2006-09-02T10:32:04Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Franck Bui-Huu\" <vagabon.xyz@gmail.com> writes:\n\n>> So if you beat me to it, that would be great.  Or if you have a better\n>> idea, that would be also great. :-)\n>\n> Well I'll try to start something, not sure to have a lot of time\n> though. Please contact me before starting anything, I would be sad to\n> write something for /dev/null again ;)\n\nI do not necessarily think your effort were for /dev/null; for\nexample, I was hoping you defend [PATCH 3/3].\n\nWhile it makes sense to make \"tar-tree --remote\" usable outside\na git managed repository, I think people expect the connection\nto obey core.gitproxy if the command is run inside a repository\nthat has a configuration file.\n"},{"id":"26212","messageId":"edbmqp$bns$1@sea.gmane.org","threadId":"5441","inReplyTo":"7vfyfa1rvf.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH 0/3] git-daemon: plug new upload-tar command","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-09-02T10:36:20Z","receivedAt":"2006-09-02T10:36:20Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Junio C Hamano wrote:\n\n> \"Franck Bui-Huu\" <vagabon.xyz@gmail.com> writes:\n> \n>>> So if you beat me to it, that would be great.  Or if you have a better\n>>> idea, that would be also great. :-)\n>>\n>> Well I'll try to start something, not sure to have a lot of time\n>> though. Please contact me before starting anything, I would be sad to\n>> write something for /dev/null again ;)\n> \n> I do not necessarily think your effort were for /dev/null; for\n> example, I was hoping you defend [PATCH 3/3].\n> \n> While it makes sense to make \"tar-tree --remote\" usable outside\n> a git managed repository, I think people expect the connection\n> to obey core.gitproxy if the command is run inside a repository\n> that has a configuration file.\n\nIf I remember correclty git now support (totally undocumented) per-user\nconfiguration file, so one can have core.gitproxy even outside git\nrepository. Although some warning that you are running from outside\nrepository and configuration might be not what you want would be nice. \n\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"26237","messageId":"cda58cb80609021312y79456479w649dc078a68ff23c@mail.gmail.com","threadId":"5441","inReplyTo":"7vfyfa1rvf.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH 0/3] git-daemon: plug new upload-tar command","fromName":"Franck Bui-Huu","fromEmail":"vagabon.xyz@gmail.com","sentAt":"2006-09-02T20:12:53Z","receivedAt":"2006-09-02T20:12:53Z","isPatch":true,"sender":{"key":"vagabon.xyz@gmail.com","avatar":null},"body":"2006/9/2, Junio C Hamano <junkio@cox.net>:\n> \"Franck Bui-Huu\" <vagabon.xyz@gmail.com> writes:\n>\n> >> So if you beat me to it, that would be great.  Or if you have a better\n> >> idea, that would be also great. :-)\n> >\n> > Well I'll try to start something, not sure to have a lot of time\n> > though. Please contact me before starting anything, I would be sad to\n> > write something for /dev/null again ;)\n>\n> I do not necessarily think your effort were for /dev/null; for\n> example, I was hoping you defend [PATCH 3/3].\n>\n\nWell, with a new git-archive-tree command, I thought it would make\nsense to put the remote logic there and let the git-tar-tree be a\nlocal command. But Rene has a different approach, please see his new\nthread \"Add git-archive-tree\".\n\n> While it makes sense to make \"tar-tree --remote\" usable outside\n> a git managed repository, I think people expect the connection\n> to obey core.gitproxy if the command is run inside a repository\n> that has a configuration file.\n>\n\nMake sense.\n\n-- \n               Franck\n\n-- \nVGER BF report: U 0.799618\n"}]}