git-daemon - A really simple server for Git repositoriesgit-daemon - Gitリポジトリ用のとてもシンプルなサーバー


git daemon [--verbose] [--syslog] [--export-all]
	     [--timeout=<n>] [--init-timeout=<n>] [--max-connections=<n>]
	     [--strict-paths] [--base-path=<path>] [--base-path-relaxed]
	     [--user-path | --user-path=<path>]
	     [--reuseaddr] [--detach] [--pid-file=<file>]
	     [--enable=<service>] [--disable=<service>]
	     [--allow-override=<service>] [--forbid-override=<service>]
	     [--access-hook=<path>] [--[no-]informative-errors]
	     [--inetd |
	      [--listen=<host_or_ipaddr>] [--port=<n>]
	      [--user=<user> [--group=<group>]]]


A really simple TCP Git daemon that normally listens on port "DEFAULT_GIT_PORT" aka 9418. It waits for a connection asking for a service, and will serve that service if it is enabled.通常はポート "DEFAULT_GIT_PORT"(別名9418)で待機する非常に単純なTCP Gitデーモン。サービスを要求する接続を待機し、有効になっている場合はそのサービスを提供します。

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 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.ディレクトリにマジックファイル "git-daemon-export-ok"があることを確認し、この方法で明示的にエクスポートのマークが付けられていないGitディレクトリをエクスポートすることを拒否し--export-allます(パラメータが指定されていない限り)。gitデーモンの引数としてディレクトリパスを渡す場合は、それらを組み合わせたホワイトリストにオファーをさらに制限できます。

By default, only upload-pack service is enabled, which serves git fetch-pack and git ls-remote clients, which are invoked from git fetch, git pull, and git clone.デフォルトでは、git fetchgit pull、およびgit cloneから呼び出されるgit fetch-packおよびgit ls-remoteクライアントにupload-packサービスを提供するサービスのみが有効になっています。

This is ideally suited for read-only updates, i.e., pulling from Git repositories.これは読み取り専用の更新、つまりGitリポジトリから取得するのに理想的です。

An upload-archive also exists to serve git archive.gitアーカイブupload-archiveを提供するためのものもあります



Match paths exactly (i.e. don’t allow "/foo/repo" when the real path is "/foo/repo.git" or "/foo/repo/.git") and don’t do user-relative paths. git daemon will refuse to start when this option is enabled and no whitelist is specified.パスを正確に一致させ(つまり、実際のパスが "/foo/repo.git"または "/foo/repo/.git"の場合は "/ foo / repo"を許可しないでください)、ユーザー相対パスをしないでください。このオプションが有効でホワイトリストが指定されていない場合、gitデーモンは起動を拒否します。

--base-path=<path> --base-path = <パス>

Remap all the path requests as relative to the given path. This is sort of "Git root" - if you run git daemon with --base-path=/srv/git on example.com, then if you later try to pull git://example.com/hello.git, git daemon will interpret the path as /srv/git/hello.git.与えられたパスに対する相対パスとしてすべてのパス要求を再マップします。これは、「Gitのルート」の一種である-あなたが実行した場合のgitデーモン--base-パス= / srvの/ gitの後、example.comのを、あなたは後で引くしようとした場合にgit://example.com/hello.gitをgitのデーモンはパスを/srv/git/hello.gitとして解釈します。


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.--base-pathが有効になっていてリポジトリの検索が失敗した場合、このオプションを指定するとgitデーモンは基本パスを前に付けずに検索を試みます。古いパスをそのまま使用しながら、これは--base-path使用法に切り替えるのに役立ちます。

--interpolated-path=<pathtemplate> --interpolated-path = <パステンプレート>

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 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.仮想ホスティングをサポートするために、補間パステンプレートを使用して代替パスを動的に構築することができます。テンプレートは、クライアントから提供されたターゲットホスト名に対して%Hをサポートしていますが、すべて小文字に変換され、正規ホスト名に対して%CH、サーバーのIPアドレスに対して%IP、ポート番号に対して%P、および絶対パスに対して%Dをサポートします。指定されたリポジトリ 補間の後、パスはディレクトリホワイトリストに対して検証されます。


Allow pulling from all directories that look like Git repositories (have the objects and refs subdirectories), even if they do not have the git-daemon-export-ok file.たとえgit-daemon-export-okファイルがなくても、Gitリポジトリのように見える(objectsrefsサブディレクトリを持つ)すべてのディレクトリから引き出すことを許可します。


Have the server run as an inetd service. Implies --syslog (may be overridden with --log-destination=). Incompatible with --detach, --port, --listen, --user and --group options.サーバーをinetdサービスとして実行します。--syslogを暗黙指定します(で上書きされる場合があります--log-destination=)。--detach、 - port、 - listen、 - user、 - groupオプションとの互換性はありません。

--listen=<host_or_ipaddr> --listen = <host_or_ipaddr>

Listen on 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. Can be given more than once. Incompatible with --inetd option.特定のIPアドレスまたはホスト名を聞いてください。サポートされている場合、IPアドレスはIPv4アドレスまたはIPv6アドレスのいずれかです。IPv6がサポートされていない場合は、--listen = hostnameもサポートされず、--listenにはIPv4アドレスを指定する必要があります。複数回指定できます。--inetdオプションとの互換性はありません。

--port=<n> --port = <n>

Listen on an alternative port. Incompatible with --inetd option.別のポートで聞いてください。--inetdオプションとの互換性はありません。

--init-timeout=<n> --init-timeout = <n>

Timeout (in seconds) between the moment the connection is established and the client request is received (typically a rather low value, since that should be basically immediate).接続が確立されてからクライアントの要求が受信されるまでの間のタイムアウト(秒単位)(基本的には即時であるはずなので、通常はかなり低い値)。

--timeout=<n> --timeout = <n>

Timeout (in seconds) for specific client sub-requests. This includes the time it takes for the server to process the sub-request and the time spent waiting for the next client’s request.特定のクライアントサブリクエストのタイムアウト(秒)。これには、サーバーがサブ要求を処理するのにかかる時間と、次のクライアントの要求を待つのに費やされる時間が含まれます。

--max-connections=<n> --max-connections = <n>

Maximum number of concurrent clients, defaults to 32. Set it to zero for no limit.最大同時クライアント数。デフォルトは32です。制限なしにゼロに設定します。


Short for --log-destination=syslog.の略です--log-destination=syslog

--log-destination=<destination> --log-destination = <destination>

Send log messages to the specified destination. Note that this option does not imply --verbose, thus by default only error conditions will be logged. The <destination> must be one of:指定された宛先にログメッセージを送信します。このオプションは--verboseを意味しないことに注意してください。したがって、デフォルトではエラー状態のみが記録されます。<destination>は次のいずれかになります。


Write to standard error. Note that if --detach is specified, the process disconnects from the real standard error, making this destination effectively equivalent to none.標準エラーに書き込みます。--detachが指定されている場合、プロセスは実際の標準エラーから切断され、この宛先は事実上等価になりnoneます。


Write to syslog, using the git-daemon identifier.git-daemon識別子を使用してsyslogに書き込みます。

none 無し

Disable all logging.すべてのログ記録を無効にします。

The default destination is syslog if --inetd or --detach is specified, otherwise stderr.デフォルトの宛先はsyslog、指定されている場合--inetdまたは--detach指定されている場合stderrです。

--user-path=<path> --user-path = <パス>

Allow ~user notation to be used in requests. When specified with no parameter, requests to git://host/~alice/foo is taken as a request to access foo repository in the home directory of user alice. If --user-path=path is specified, the same request is taken as a request to access path/foo repository in the home directory of user alice.リクエストで〜ユーザー表記を使用できるようにします。パラメータなしで指定した場合、git:// host /〜alice / fooへの要求は、ユーザーのホームディレクトリにあるfooリポジトリへのアクセス要求と見なされますalice。場合は--user-path=path指定されている、同じ要求がアクセスするための要求として解釈されpath/foo、ユーザのホームディレクトリにリポジトリをalice

--verbose - 冗談

Log details about the incoming connections and requested files.着信接続および要求されたファイルに関する詳細をログに記録します。


Use SO_REUSEADDR when binding the listening socket. This allows the server to restart without waiting for old connections to time out.待機ソケットをバインドするときはSO_REUSEADDRを使用してください。これにより、古い接続がタイムアウトするのを待たずにサーバーを再起動できます。


Detach from the shell. Implies --syslog.シェルから切り離します。--syslogを意味します。

--pid-file=<file> --pid-file = <ファイル>

Save the process id in file. Ignored when the daemon is run under --inetd.プロセスIDをファイルに保存します。デーモンが実行されて--inetdいるときは無視されます。

--user=<user> --user = <ユーザー>
--group=<group> --group = <グループ>

Change daemon’s uid and gid before entering the service loop. When only --user is given without --group, the primary group ID for the user is used. The values of the option are given to getpwnam(3) and getgrnam(3) and numeric IDs are not supported.サービスループに入る前にデーモンのuidとgidを変更してください。--userなし--groupでのみ指定されている場合は、ユーザーの1次グループIDが使用されます。オプションの値がに与えられているgetpwnam(3)getgrnam(3)し、数値IDがサポートされていません。

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.これらのオプションを指定して使用するとエラーになり--inetdます。必要に応じて、gitデーモンを起動する前に、inetデーモンの機能を使用して同じことを実現してください。

Like many programs that switch user id, the daemon does not reset environment variables such as $HOME when it runs git programs, e.g. upload-pack and receive-pack. When using this option, you may also want to set and export HOME to point at the home directory of <user> before starting the daemon, and make sure any Git configuration files in that directory are readable by <user>.ユーザIDを切り替えて、多くのプログラムと同様に、デーモンは、以下のような環境変数をリセットしません$HOME、それはgitのプログラム、例えば実行時にupload-packとをreceive-pack。このオプションを使用する場合、デーモンを起動する前HOMEのホームディレクトリを指すように設定およびエクスポートし<user>、そのディレクトリ内のGit設定ファイルが読み取り可能であることを確認することもできます<user>

--enable=<service> --enable = <サービス>
--disable=<service> --disable = <サービス>

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 a configuration item.デフォルトでサイト全体のサービスを有効/無効にします。サイト全体で無効になっているサービスは、上書き可能とマークされていて、リポジトリが構成アイテムを使用してサービスを有効にしている場合、リポジトリごとに有効にできます。

--allow-override=<service> --allow-override = <サービス>
--forbid-override=<service> --forbid-override = <サービス>

Allow/forbid overriding the site-wide default with per repository configuration. By default, all the services may be overridden.リポジトリごとの設定でサイト全体のデフォルトを上書きすることを許可/禁止します。デフォルトでは、すべてのサービスが上書きされる可能性があります。

--[no-]informative-errors - [no-]有益なエラー

When informative errors are turned on, git-daemon will report more verbose errors to the client, differentiating conditions like "no such repository" from "repository not exported". This is more convenient for clients, but may leak information about the existence of unexported repositories. When informative errors are not enabled, all errors report "access denied" to the client. The default is --no-informative-errors.有益なエラーがオンになっていると、git-daemonはより冗長なエラーをクライアントに報告し、 "no such repository"などの条件を "repository not export"と区別します。これはクライアントにとってより便利ですが、エクスポートされていないリポジトリの存在に関する情報を漏らすかもしれません。情報エラーが有効になっていない場合、すべてのエラーがクライアントに「アクセス拒否」を報告します。デフォルトは--no-informative-errorsです。

--access-hook=<path> --access-hook = <パス>

Every time a client connects, first run an external command specified by the <path> with service name (e.g. "upload-pack"), path to the repository, hostname (%H), canonical hostname (%CH), IP address (%IP), and TCP port (%P) as its command-line arguments. The external command can decide to decline the service by exiting with a non-zero status (or to allow it by exiting with a zero status). It can also look at the $REMOTE_ADDR and $REMOTE_PORT environment variables to learn about the requestor when making this decision.クライアントが接続するたびに、まず<path>で指定されたサービス名(例: "upload-pack")、リポジトリへのパス、ホスト名(%H)、正規のホスト名(%CH)、IPアドレス()で指定された外部コマンドを実行します。コマンドライン引数として、%IP)およびTCPポート(%P)を指定します。外部コマンドは、ゼロ以外のステータスで終了することでサービスを拒否することを決定できます(またはゼロのステータスで終了することでサービスを許可することを決定できます)。$REMOTE_PORTこの決定をするときに、$ REMOTE_ADDRと環境変数を調べて要求者について知ることもできます。

The external command can optionally write a single line to its standard output to be sent to the requestor as an error message when it declines the service.外部コマンドは、サービスを拒否したときにエラーメッセージとしてリクエスタに送信するために、標準出力にオプションで1行を書き込むことができます。

<directory> <ディレクトリ>

A directory to add to the whitelist of allowed directories. Unless --strict-paths is specified this will also include subdirectories of each named directory.許可されたディレクトリのホワイトリストに追加するディレクトリ。--strict-pathsが指定されていない限り、これにはそれぞれの名前付きディレクトリのサブディレクトリも含まれます。


These services can be globally enabled/disabled using the command-line options of this command. If 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.このコマンドのコマンドラインオプションを使用して、これらのサービスをグローバルに有効/無効にすることができます。きめ細かい制御が必要な場合(例えば、デーモンが提供する少数の選択されたリポジトリに対してのみgitアーカイブを実行できるようにする場合)、リポジトリごとの設定ファイルを使用してそれらを有効または無効にすることができます。

upload-pack アップロードパック

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.これはgit fetch-packgit ls-remoteクライアントに役立ちます。デフォルトで有効になっていますが、リポジトリはdaemon.uploadpack設定項目をに設定することで無効にできますfalse

upload-archive アップロードアーカイブ

This serves git archive --remote. It is disabled by default, but a repository can enable it by setting daemon.uploadarch configuration item to true.これはgitアーカイブ--remoteを提供します。デフォルトでは無効になっていますが、リポジトリはdaemon.uploadarch設定項目をに設定することで有効にできます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 setting daemon.receivepack configuration item to true.これはgit send-packクライアントにサービスを提供し、匿名プッシュを可能にします。プロトコルには認証がないため、デフォルトでは無効になっています(つまり、参照の削除を含め、誰でもリポジトリにプッシュできます)。これはもっぱらみんなが優しい、閉じたLAN環境のためのものです。このサービスはdaemon.receivepack設定項目をに設定することで有効にできますtrue


We assume the following in /etc/services / etc / servicesを以下とします
$ grep 9418 /etc/services
git		9418/tcp		# Git Version Control System
git daemon as inetd server inetdサーバーとしてのgitデーモン

To set up git daemon as an inetd service that handles any repository under the whitelisted set of directories, /pub/foo and /pub/bar, place an entry like the following into /etc/inetd all on one line:ホワイトリストのディレクトリセット/ pub / fooおよび/ pub / barの下の任意のリポジトリを処理するinetdサービスとしてgitデーモンを設定するには、次のようなエントリを/ etc / inetdに1行で入力します。

	git stream tcp nowait nobody  /usr/bin/git
		git daemon --inetd --verbose --export-all
		/pub/foo /pub/bar
git daemon as inetd server for virtual hosts 仮想ホスト用のinetdサーバーとしてのgitデーモン

To set up git daemon as an inetd service that handles repositories for different virtual hosts, www.example.com and www.example.org, place an entry like the following into /etc/inetd all on one line:設定するにはgitのデーモンを別の仮想ホストのためのリポジトリを扱うのinetdサービスとして、www.example.comwww.example.orgに次のようなエントリ置き、/etc/inetdすべて1行に:

	git stream tcp nowait nobody /usr/bin/git
		git daemon --inetd --verbose --export-all

In this example, the root-level directory /pub will contain a subdirectory for each virtual host name supported. Further, both hosts advertise repositories simply as git://www.example.com/software/repo.git. For pre-1.4.0 clients, a symlink from /software into the appropriate default repository could be made as well.この例では、ルートレベルディレクトリ/pubに、サポートされている各仮想ホスト名のサブディレクトリが含まれます。さらに、両方のホストが単にリポジトリをアドバタイズしますgit://www.example.com/software/repo.git。1.4.0より前のクライアントでは/software、適切なデフォルトリポジトリへのシンボリックリンクも作成できます。

git daemon as regular daemon for virtual hosts 仮想ホスト用の通常のデーモンとしてのgitデーモン

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:IPアドレスに基づいて複数の仮想ホストのリポジトリを処理する、inetdではない通常のサービスとしてgitデーモンを設定するには、次のようにデーモンを起動します。

	git daemon --verbose --export-all

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.この例では、ルートレベルディレクトリ/pubに、サポートされている各仮想ホストIPアドレスのサブディレクトリが含まれます。ただし、リポジトリはこれらのIPアドレスに対応していると仮定しても、ホスト名でアクセスできます。

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).git archive --remoteを有効にし、リポジトリに対してgit fetchを無効にするには、リポジトリの設定ファイルに次のように記述します(つまり、refsobjectsの隣のファイルconfig)。HEAD

		uploadpack = false
		uploadarch = true


git daemon will set REMOTE_ADDR to the IP address of the client that connected to it, if the IP address is available. REMOTE_ADDR will be available in the environment of hooks called when services are performed.IPアドレスが利用可能な場合、gitデーモンはREMOTE_ADDRをそれに接続しているクライアントのIPアドレスに設定します。REMOTE_ADDRは、サービスが実行されるときに呼び出されるフックの環境で使用可能になります。


Part of the git[1] suite一部のgit [1]スイート




TortoiseGit Gitクライアント