path: root/Documentation/git-daemon.txt
diff options
authorJon Loeliger <>2006-09-26 14:47:43 (GMT)
committerJunio C Hamano <>2006-09-28 01:00:52 (GMT)
commitdd4676299dde0a4c6f8a471e6353170f86a78c8a (patch)
tree82c634ecf07370a2190ee40c075bb07864f455fc /Documentation/git-daemon.txt
parenta3f5d02edb2c1a037ed3ed8d2ebd3f3e5da9d198 (diff)
Cleaned up git-daemon virtual hosting support.
Standardized on lowercase hostnames from client. Added interpolation values for the IP address, port and canonical hostname of the server as it is contacted and named by the client and passed in via the extended args. Added --listen=host_or_ipaddr option suport. Renamed port variable as "listen_port" correspondingly as well. Documented mutual exclusivity of --inetd option with --user, --group, --listen and --port options. Added compat/inet_pton.c from Paul Vixie as needed. Small memory leaks need to be cleaned up still. Signed-off-by: Jon Loeliger <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/git-daemon.txt')
1 files changed, 37 insertions, 6 deletions
diff --git a/Documentation/git-daemon.txt b/Documentation/git-daemon.txt
index 51d7c94..d562232 100644
--- a/Documentation/git-daemon.txt
+++ b/Documentation/git-daemon.txt
@@ -8,14 +8,15 @@ git-daemon - A really simple server for git repositories
-'git-daemon' [--verbose] [--syslog] [--inetd | --port=n] [--export-all]
+'git-daemon' [--verbose] [--syslog] [--export-all]
[--timeout=n] [--init-timeout=n] [--strict-paths]
[--base-path=path] [--user-path | --user-path=path]
+ [--reuseaddr] [--detach] [--pid-file=file]
[--enable=service] [--disable=service]
[--allow-override=service] [--forbid-override=service]
- [--reuseaddr] [--detach] [--pid-file=file]
- [--user=user [--group=group]] [directory...]
+ [--inetd | [--listen=host_or_ipaddr] [--port=n] [--user=user [--group=group]]
+ [directory...]
@@ -54,8 +55,12 @@ OPTIONS
To support virtual hosting, an interpolated path template can be
used to dynamically construct alternate paths. The template
- supports %H for the target hostname as supplied by the client,
+ supports %H for the target hostname as supplied by the client but
+ converted to all lowercase, %CH for the canonical hostname,
+ %IP for the server's IP address, %P for the port number,
and %D for the absolute path of the named repository.
+ After interpolation, the path is validated against the directory
+ whitelist.
Allow pulling from all directories that look like GIT repositories
@@ -64,9 +69,17 @@ OPTIONS
Have the server run as an inetd service. Implies --syslog.
+ Incompatible with --port, --listen, --user and --group options.
+ Listen on an a specific IP address or hostname. IP addresses can
+ be either an IPv4 address or an IPV6 address if supported. If IPv6
+ is not supported, then --listen=hostname is also not supported and
+ --listen must be given an IPv4 address.
+ Incompatible with '--inetd' option.
- Listen on an alternative port.
+ Listen on an alternative port. Incompatible with '--inetd' option.
Timeout between the moment the connection is established and the
@@ -182,6 +195,24 @@ clients, a symlink from `/software` into the appropriate
default repository could be made as well.
+git-daemon as regular daemon for virtual hosts::
+ To set up `git-daemon` as a regular, non-inetd service that
+ handles repositories for multiple virtual hosts based on
+ their IP addresses, start the daemon like this:
+ git-daemon --verbose --export-all
+ --interpolated-path=/pub/%IP/%D
+ /pub/
+ /pub/
+In this example, the root-level directory `/pub` will contain
+a subdirectory for each virtual host IP address supported.
+Repositories can still be accessed by hostname though, assuming
+they correspond to these IP addresses.
Written by Linus Torvalds <>, YOSHIFUJI Hideaki