index d562232e522fba78721328b1c76ce08490b0ee3e..fd83bc7833312b20a7ef045a9dfd128fc2539838 100644 (file)
the offers to a whitelist comprising of those.
By default, only `upload-pack` service is enabled, which serves
the offers to a whitelist comprising of those.
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`.
+`git-fetch-pack` and `git-ls-remote` clients, which are invoked
+from `git-fetch`, `git-pull`, and `git-clone`.
This is ideally suited for read-only updates, i.e., pulling from
git repositories.
This is ideally suited for read-only updates, i.e., pulling from
git repositories.
+An `upload-archive` also exists to serve `git-archive`.
+
OPTIONS
-------
--strict-paths::
OPTIONS
-------
--strict-paths::
'git://example.com/hello.git', `git-daemon` will interpret the path
as '/srv/git/hello.git'.
'git://example.com/hello.git', `git-daemon` will interpret the path
as '/srv/git/hello.git'.
+--base-path-relaxed::
+ If --base-path is enabled and repo lookup fails, with this option
+ `git-daemon` will attempt to lookup without prefixing the base path.
+ This is useful for switching to --base-path usage, while still
+ allowing the old paths.
+
--interpolated-path=pathtemplate::
To support virtual hosting, an interpolated path template can be
used to dynamically construct alternate paths. The template
--interpolated-path=pathtemplate::
To support virtual hosting, an interpolated path template can be
used to dynamically construct alternate paths. The template
Detach from the shell. Implies --syslog.
--pid-file=file::
Detach from the shell. Implies --syslog.
--pid-file=file::
- Save the process id in 'file'.
+ Save the process id in 'file'. Ignored when the daemon
+ is run under `--inetd`.
--user=user, --group=group::
Change daemon's uid and gid before entering the service loop.
--user=user, --group=group::
Change daemon's uid and gid before entering the service loop.
the facility of inet daemon to achieve the same before spawning
`git-daemon` if needed.
the facility of inet daemon to achieve the same before spawning
`git-daemon` if needed.
---enable-service, --disable-service::
+--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.
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-override=service, --forbid-override=service::
Allow/forbid overriding the site-wide default with per
repository configuration. By default, all the services
are overridable.
Allow/forbid overriding the site-wide default with per
repository configuration. By default, all the services
are overridable.
SERVICES
--------
SERVICES
--------
+These services can be globally enabled/disabled using the
+command line options of this command. If a finer-grained
+control is desired (e.g. to allow `git-archive` to be run
+against only in a few selected repositories the daemon serves),
+the per-repository configuration file can be used to enable or
+disable them.
+
upload-pack::
upload-pack::
- This serves `git-fetch-pack` and `git-peek-remote`
+ This serves `git-fetch-pack` and `git-ls-remote`
clients. It is enabled by default, but a repository can
disable it by setting `daemon.uploadpack` configuration
item to `false`.
clients. It is enabled by default, but a repository can
disable it by setting `daemon.uploadpack` configuration
item to `false`.
+upload-archive::
+ This serves `git-archive --remote`. It is disabled by
+ default, but a repository can enable it by setting
+ `daemon.uploadarchive` configuration item to `true`.
+
+receive-pack::
+ This serves `git-send-pack` clients, allowing anonymous
+ push. It is disabled by default, as there is _no_
+ authentication in the protocol (in other words, anybody
+ can push anything into the repository, including removal
+ of refs). This is solely meant for a closed LAN setting
+ where everybody is friendly. This service can be
+ enabled by `daemon.receivepack` configuration item to
+ `true`.
+
EXAMPLES
--------
EXAMPLES
--------
+We assume the following in /etc/services::
++
+------------
+$ grep 9418 /etc/services
+git 9418/tcp # Git Version Control System
+------------
+
git-daemon as inetd server::
To set up `git-daemon` as an inetd service that handles any
repository under the whitelisted set of directories, /pub/foo
git-daemon as inetd server::
To set up `git-daemon` as an inetd service that handles any
repository under the whitelisted set of directories, /pub/foo
+
------------------------------------------------
git stream tcp nowait nobody /usr/bin/git-daemon
+
------------------------------------------------
git stream tcp nowait nobody /usr/bin/git-daemon
- git-daemon --inetd --verbose
- --syslog --export-all
+ git-daemon --inetd --verbose --export-all
/pub/foo /pub/bar
------------------------------------------------
/pub/foo /pub/bar
------------------------------------------------
+
------------------------------------------------
git stream tcp nowait nobody /usr/bin/git-daemon
+
------------------------------------------------
git stream tcp nowait nobody /usr/bin/git-daemon
- git-daemon --inetd --verbose
- --syslog --export-all
+ git-daemon --inetd --verbose --export-all
--interpolated-path=/pub/%H%D
/pub/www.example.org/software
/pub/www.example.com/software
--interpolated-path=/pub/%H%D
/pub/www.example.org/software
/pub/www.example.com/software
Repositories can still be accessed by hostname though, assuming
they correspond to these IP addresses.
Repositories can still be accessed by hostname though, assuming
they correspond to these IP addresses.
+selectively enable/disable services per repository::
+ To enable `git-archive --remote` and disable `git-fetch` against
+ a repository, have the following in the configuration file in the
+ repository (that is the file 'config' next to 'HEAD', 'refs' and
+ 'objects').
++
+----------------------------------------------------------------
+ [daemon]
+ uploadpack = false
+ uploadarchive = true
+----------------------------------------------------------------
+
Author
------
Author
------
GIT
---
GIT
---
-Part of the gitlink:git[7] suite
-
+Part of the linkgit:git[7] suite