From 74c0cc21a57a15bbce46ee02bc882064ee9bcf6b Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 Aug 2006 19:03:50 -0700 Subject: [PATCH 1/3] daemon: add upload-tar service. This allows clients to ask for tarballs with: git tar-tree --remote=git://server/repo refname By default, the upload-tar service is not enabled. To enable it server-wide, the server can be started with: git-daemon --enable=upload-tar This service is by default overridable per repostiory, so alternatively, a repository can define "daemon.uploadtar = true" to enable it. Signed-off-by: Junio C Hamano --- daemon.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/daemon.c b/daemon.c index e430cfbc8..a4a08f39d 100644 --- a/daemon.c +++ b/daemon.c @@ -324,8 +324,15 @@ static int upload_pack(void) return -1; } +static int upload_tar(void) +{ + execl_git_cmd("upload-tar", ".", NULL); + return -1; +} + static struct daemon_service daemon_service[] = { { "upload-pack", "uploadpack", upload_pack, 1, 1 }, + { "upload-tar", "uploadtar", upload_tar, 0, 1 }, }; static void enable_service(const char *name, int ena) { @@ -896,12 +903,12 @@ int main(int argc, char **argv) enable_service(arg + 10, 0); continue; } - if (!strncmp(arg, "--enable-override=", 18)) { - make_service_overridable(arg + 18, 1); + if (!strncmp(arg, "--allow-override=", 17)) { + make_service_overridable(arg + 17, 1); continue; } - if (!strncmp(arg, "--disable-override=", 19)) { - make_service_overridable(arg + 19, 0); + if (!strncmp(arg, "--forbid-override=", 18)) { + make_service_overridable(arg + 18, 0); continue; } if (!strcmp(arg, "--")) { From 355f541249633487aa2685e7e7e29963f596b308 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 20 Aug 2006 19:32:43 -0700 Subject: [PATCH 2/3] multi-service daemon: documentation Signed-off-by: Junio C Hamano --- Documentation/git-daemon.txt | 47 ++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/Documentation/git-daemon.txt b/Documentation/git-daemon.txt index 17619a3f5..35c3c4b61 100644 --- a/Documentation/git-daemon.txt +++ b/Documentation/git-daemon.txt @@ -11,17 +11,16 @@ SYNOPSIS 'git-daemon' [--verbose] [--syslog] [--inetd | --port=n] [--export-all] [--timeout=n] [--init-timeout=n] [--strict-paths] [--base-path=path] [--user-path | --user-path=path] - [--reuseaddr] [--detach] [--pid-file=file] - [--user=user [--group=group]] [directory...] + [--enable=service] [--disable=service] + [--allow-override=service] [--forbid-override=service] + [--reuseaddr] [--detach] [--pid-file=file] + [--user=user [--group=group]] [directory...] DESCRIPTION ----------- A really simple TCP git daemon that normally listens on port "DEFAULT_GIT_PORT" -aka 9418. It waits for a connection, and will just execute "git-upload-pack" -when it gets one. - -It's careful in that there's a magic request-line that gives the command and -what directory to upload, and it verifies that the directory is OK. +aka 9418. It waits for a connection asking for a service, and will serve +that service if it is enabled. It verifies that the directory has the magic file "git-daemon-export-ok", and it will refuse to export any git directory that hasn't explicitly been marked @@ -29,7 +28,12 @@ for export this way (unless the '--export-all' parameter is specified). If you pass some directory paths as 'git-daemon' arguments, you can further restrict the offers to a whitelist comprising of those. -This is ideally suited for read-only updates, i.e., pulling from git repositories. +By default, only `upload-pack` service is enabled, which serves +`git-fetch-pack` and `git-peek-remote` clients that are invoked +from `git-fetch`, `git-ls-remote`, and `git-clone`. + +This is ideally suited for read-only updates, i.e., pulling from +git repositories. OPTIONS ------- @@ -105,11 +109,38 @@ Giving these options is an error when used with `--inetd`; use the facility of inet daemon to achieve the same before spawning `git-daemon` if needed. +--enable-service, --disable-service:: + Enable/disable the service site-wide per default. Note + that a service disabled site-wide can still be enabled + per repository if it is marked overridable and the + repository enables the service with an configuration + item. + +--allow-override, --forbid-override:: + Allow/forbid overriding the site-wide default with per + repository configuration. By default, all the services + are overridable. + :: A directory to add to the whitelist of allowed directories. Unless --strict-paths is specified this will also include subdirectories of each named directory. +SERVICES +-------- + +upload-pack:: + This serves `git-fetch-pack` and `git-peek-remote` + clients. It is enabled by default, but a repository can + disable it by setting `daemon.uploadpack` configuration + item to `false`. + +upload-tar:: + This serves `git-tar-tree --remote=repository` client. + It is not enabled by default, but a repository can + enable it by setting `daemon.uploadtar` configuration + item to `true`. + Author ------ Written by Linus Torvalds , YOSHIFUJI Hideaki From d9edcbd6061a392c1315ab6f3aedb9992a3c01b1 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 7 Sep 2006 01:40:04 -0700 Subject: [PATCH 3/3] Revert "daemon: add upload-tar service." This reverts parts of commit 74c0cc2 and part of commit 355f541. Franck and Rene are working on a unified upload-archive which would supersede this when done, so better not to get in their way. Signed-off-by: Junio C Hamano --- Documentation/git-daemon.txt | 6 ------ daemon.c | 8 +------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/Documentation/git-daemon.txt b/Documentation/git-daemon.txt index 35c3c4b61..741f2c69b 100644 --- a/Documentation/git-daemon.txt +++ b/Documentation/git-daemon.txt @@ -135,12 +135,6 @@ upload-pack:: disable it by setting `daemon.uploadpack` configuration item to `false`. -upload-tar:: - This serves `git-tar-tree --remote=repository` client. - It is not enabled by default, but a repository can - enable it by setting `daemon.uploadtar` configuration - item to `true`. - Author ------ Written by Linus Torvalds , YOSHIFUJI Hideaki diff --git a/daemon.c b/daemon.c index a4a08f39d..b14d8083b 100644 --- a/daemon.c +++ b/daemon.c @@ -22,6 +22,7 @@ static const char daemon_usage[] = " [--timeout=n] [--init-timeout=n] [--strict-paths]\n" " [--base-path=path] [--user-path | --user-path=path]\n" " [--reuseaddr] [--detach] [--pid-file=file]\n" +" [--[enable|disable|allow-override|forbid-override]=service]\n" " [--user=user [[--group=group]] [directory...]"; /* List of acceptable pathname prefixes */ @@ -324,15 +325,8 @@ static int upload_pack(void) return -1; } -static int upload_tar(void) -{ - execl_git_cmd("upload-tar", ".", NULL); - return -1; -} - static struct daemon_service daemon_service[] = { { "upload-pack", "uploadpack", upload_pack, 1, 1 }, - { "upload-tar", "uploadtar", upload_tar, 0, 1 }, }; static void enable_service(const char *name, int ena) {