chiark / gitweb /
git-daemon: add Makefile and documentation.
[userv-utils.git] / git-daemon / README
diff --git a/git-daemon/README b/git-daemon/README
new file mode 100644 (file)
index 0000000..d8e6a7a
--- /dev/null
@@ -0,0 +1,63 @@
+userv-git-daemon is a replacement for the standard git daemon,
+which provides anonymous remote access to git repositories.
+
+It uses userv to invoke the service requested by the client, and users
+can configure it to map git:// URLs to repositories and enable and
+disable services as they see fit, without intervention from the system
+administrator.
+
+
+To install:
+-----------
+
+Adjust the paths in ../settings.make as necessary.
+userv-git-daemon uses $(libuserv), $(etcuserv), and $(services).
+
+Type make install.
+
+Create a "git" user that will run the outer part of the git-daemon.
+Ensure your /etc/services contains a line like "git 9418/tcp".
+
+Insert the inetd.conf fragment into your /etc/inetd.conf
+and tell inetd to reload.
+
+As a test user, create a 'public-git' directory, and copy a bare git
+repository into it, e.g.
+       git clone --bare git://dotat.at/unifdef.git public-git/unifdef.git
+
+This repository should now be visible:
+       git ls-remote git://localhost/~test/unifdef.git
+
+
+Operation:
+----------
+
+The userv-git-daemon is invoked by inetd which also tells it where to
+find its global git-urlmap script.
+
+The git-daemon parses the request from the network and uses the global
+git-urlmap script to determine which user will run the requested
+service. It invokes userv for the request to be performed. The most
+common service is git-upload-pack, which is confusingly named: it
+uploads from the repository to the network; other services supported
+by git are git-upload-archive and git-receive-pack.
+
+The git-daemon will pass any service beginning git- to userv. The
+userv configuration determines which services may be requested. This
+package includes example git-upload-pack service configurations.
+
+The service configuration uses the git-service script to run the
+service. It passes the global and per-user git-urlmap scripts to the
+git-service script to determine where in the filesyetem the requested
+repository is. Later urlmap scripts override the choices made by
+earlier ones. See the sample git-urlmap script for details of the
+variables they can examine and set.
+
+If a repository is located, the git-service script runs the requested
+service, which is simply the git program with the same name.
+
+
+----------------------------------------------
+This was written by Tony Finch <dot@dotat.at>
+You may do anything with it, at your own risk.
+http://creativecommons.org/publicdomain/zero/1.0/