セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.50.1 変更なし
-
2.50.0
2025-06-16
- 2.44.1 → 2.49.1 変更なし
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 変更なし
-
2.43.0
2023-11-20
- 2.37.3 → 2.42.4 変更なし
-
2.37.2
2022-08-11
- 2.22.1 → 2.37.1 変更なし
-
2.22.0
2019-06-07
- 2.17.1 → 2.21.4 変更なし
-
2.17.0
2018-04-02
- 2.10.5 → 2.16.6 変更なし
-
2.9.5
2017-07-30
- 2.2.3 → 2.8.6 変更なし
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概要
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>] [--interpolated-path=
<pathtemplate>] [--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>]]] [--log-destination=
(stderr
|syslog
|none
)] [<directory>…]
説明
「DEFAULT_GIT_PORT」すなわち9418番ポートで通常待ち受ける、非常にシンプルなTCP Gitデーモンです。サービスを要求する接続を待ち、有効になっているサービスであれば提供します。
ディレクトリに「git-daemon-export-ok」というマジックファイルがあることを確認し、この方法で明示的にエクスポートがマークされていないGitディレクトリはエクスポートを拒否します(--export-all
パラメータが指定されていない限り)。git
daemon
の引数としていくつかのディレクトリパスを渡すと、提供されるリポジトリはそれらのディレクトリ内のものに限定されます。
デフォルトでは、upload-pack
サービスのみが有効になっており、これはgit
fetch
、git
pull
、git
clone
から呼び出されるgit
fetch-pack
とgit
ls-remote
クライアントにサービスを提供します。
これは、Gitリポジトリからのプルなど、読み取り専用の更新に最適です。
git
archive
にサービスを提供するためのupload-archive
も存在します。
オプション
--strict-paths
-
パスを正確に照合します(つまり、実際のパスが「/foo/repo.git」または「/foo/repo/.git」の場合に「/foo/repo」を許可しません)。また、ユーザー相対パスを実行しません。このオプションが有効で、ディレクトリ引数が提供されていない場合、
git
daemon
は起動を拒否します。 --base-path=
<path>-
すべてのパス要求を指定されたパスに対する相対パスとして再マッピングします。これは「Gitルート」のようなものです。たとえば
example.com
でgit
daemon
を--base-path=/srv/git
で実行している場合、後でgit://example.com/hello.git
からプルしようとすると、git
daemon
はパスを/srv/git/hello.git
として解釈します。 --base-path-relaxed
-
--base-path
が有効でリポジトリの検索に失敗した場合、このオプションを使用すると、git
daemon
はベースパスのプレフィックスなしで検索を試みます。これは、以前のパスも許可しながら、--base-path
の使用に切り替える場合に便利です。 --interpolated-path=
<pathtemplate>-
仮想ホスティングをサポートするために、補間されたパスのテンプレートを使用して、代替パスを動的に構築できます。テンプレートは、クライアントによって提供されるターゲットホスト名(すべて小文字に変換されたもの)に対して
%H
、正規のホスト名に対して%CH
、サーバーのIPアドレスに対して%IP
、ポート番号に対して%P
、指定されたリポジトリの絶対パスに対して%D
をサポートします。補間後、パスはディレクトリリストに対して検証されます。 --export-all
-
git-daemon-export-ok
ファイルがない場合でも、Gitリポジトリのように見えるすべてのディレクトリ(objectsおよびrefsサブディレクトリを持つもの)からのプルを許可します。 --inetd
-
サーバーをinetdサービスとして実行します。
--syslog
を暗黙的に指定します(--log-destination=
で上書きできます)。--detach
、--port
、--listen
、--user
、および--group
オプションとは互換性がありません。 --listen=
<host-or-ipaddr>-
特定のIPアドレスまたはホスト名で待機します。IPアドレスは、サポートされていればIPv4アドレスまたはIPv6アドレスのどちらでも構いません。IPv6がサポートされていない場合、
--listen=
<hostname>もサポートされず、--listen
にはIPv4アドレスを指定する必要があります。複数回指定できます。--inetd
オプションとは互換性がありません。 --port=
<n>-
代替ポートで待機します。
--inetd
オプションとは互換性がありません。 --init-timeout=
<n>-
接続が確立されてからクライアント要求が受信されるまでのタイムアウト(秒単位)。(通常、これは基本的に即時であるべきなので、かなり低い値です)。
--timeout=
<n>-
特定のクライアントのサブ要求に対するタイムアウト(秒単位)。これには、サーバーがサブ要求を処理する時間と、次のクライアント要求を待機する時間が含まれます。
--max-connections=
<n>-
同時クライアントの最大数。デフォルトは32です。制限なしの場合は0に設定します。
--syslog
-
--log-destination=syslog
の短縮形。 --log-destination=
<destination>-
ログメッセージを指定された宛先に送信します。このオプションは
--verbose
を意味しないため、デフォルトではエラー条件のみがログに記録されます。<destination>は次のいずれかである必要があります。デフォルトの宛先は、
--inetd
または--detach
が指定されている場合はsyslog
、それ以外の場合はstderr
です。 --user-path
--user-path=
<path>-
リクエストで~ユーザー表記の使用を許可します。パラメータなしで指定した場合、git://host/~alice/fooへのリクエストは、ユーザー
alice
のホームディレクトリ内のfooリポジトリへのアクセスリクエストとして扱われます。--user-path=
<path>が指定された場合、同じリクエストは、ユーザーalice
のホームディレクトリ内の<path>/foo
リポジトリへのアクセスリクエストとして扱われます。 --verbose
-
着信接続と要求されたファイルに関する詳細をログに記録します。
--reuseaddr
-
待機ソケットをバインドするときに
SO_REUSEADDR
を使用します。これにより、サーバーは古い接続がタイムアウトするのを待たずに再起動できます。 --detach
-
シェルから分離します。
--syslog
を暗黙的に指定します。 --pid-file=
<file>-
プロセスIDを<file>に保存します。デーモンが
--inetd
の下で実行されている場合は無視されます。 --user=
<user>--group=
<group>-
サービスループに入る前にデーモンのuidとgidを変更します。
--group
を指定せずに--user
のみが指定されている場合、ユーザーのプライマリグループIDが使用されます。オプションの値はgetpwnam
(3
)とgetgrnam
(3
)に渡され、数値IDはサポートされていません。これらのオプションを
--inetd
と一緒に使用するとエラーになります。必要に応じて、git
daemon
を生成する前に、inetデーモンの機能を使用して同じことを達成してください。多くのユーザーIDを切り替えるプログラムと同様に、デーモンはgitプログラム(例:
upload-pack
やreceive-pack
)を実行するときにHOME
などの環境変数をリセットしません。このオプションを使用する場合、デーモンを起動する前にHOME
を<user>のホームディレクトリを指すように設定およびエクスポートし、そのディレクトリ内のGit設定ファイルが<user>によって読み取り可能であることを確認することもできます。 --enable=
<service>--disable=
<service>-
デフォルトでサービスをサイト全体で有効/無効にします。サイト全体で無効になっているサービスでも、上書き可能としてマークされており、リポジトリが設定項目でサービスを有効にしている場合は、リポジトリごとに有効にできることに注意してください。
--allow-override=
<service>--forbid-override=
<service>-
リポジトリごとの設定でサイト全体のデフォルトを上書きすることを許可/禁止します。デフォルトでは、すべてのサービスが上書き可能です。
--informative-errors
--no-informative-errors
-
詳細なエラーが有効になっている場合、git-daemonは「そのようなリポジトリはありません」と「リポジトリがエクスポートされていません」のような状態を区別し、クライアントにより詳細なエラーを報告します。これはクライアントにとってより便利ですが、エクスポートされていないリポジトリの存在に関する情報が漏洩する可能性があります。詳細なエラーが有効になっていない場合、すべてのエラーはクライアントに「アクセス拒否」を報告します。デフォルトは
--no-informative-errors
です。 --access-hook=
<path>-
クライアントが接続するたびに、まず指定された<path>の外部コマンドを、サービス名(例:「upload-pack」)、リポジトリへのパス、ホスト名(
%H
)、正規ホスト名(%CH
)、IPアドレス(%IP
)、TCPポート(%P
)をコマンドライン引数として実行します。外部コマンドは、ゼロ以外のステータスで終了することでサービスを拒否するか(またはゼロのステータスで終了することで許可するか)を決定できます。また、この決定を行う際に、要求元に関する情報を得るために$REMOTE_ADDRおよび$REMOTE_PORT
環境変数を参照することもできます。外部コマンドは、サービスを拒否する際に、要求元にエラーメッセージとして送信される単一の行を標準出力にオプションで書き込むことができます。
- <directory>
-
残りの引数はディレクトリのリストを提供します。ディレクトリが指定されている場合、
git-daemon
プロセスは、要求されたディレクトリがこれらのディレクトリのいずれかに含まれている場合にのみサービスを提供します。--strict-paths
が指定されている場合、要求されたディレクトリはこれらのディレクトリのいずれかと正確に一致する必要があります。
サービス
これらのサービスは、このコマンドのコマンドラインオプションを使用してグローバルに有効/無効にできます。より細かい制御が必要な場合(たとえば、デーモンが提供する一部のリポジトリでのみgit
archive
の実行を許可するなど)、リポジトリごとの設定ファイルを使用して有効または無効にできます。
- upload-pack
-
これは
git
fetch-pack
およびgit
ls-remote
クライアントにサービスを提供します。デフォルトで有効になっていますが、リポジトリはdaemon.uploadpack
設定項目をfalse
に設定することで無効にできます。 - upload-archive
-
これは
git
archive
--remote
にサービスを提供します。デフォルトでは無効になっていますが、リポジトリはdaemon.uploadarch
設定項目をtrue
に設定することで有効にできます。 - receive-pack
-
これは
git
send-pack
クライアントにサービスを提供し、匿名プッシュを許可します。プロトコルには認証がないため(言い換えれば、誰でもリポジトリに何でもプッシュでき、参照の削除も含む)、デフォルトでは無効になっています。これは、誰もが友好的なクローズドなLAN設定のみを想定しています。このサービスは、daemon.receivepack
設定項目をtrue
に設定することで有効にできます。
例
- /etc/servicesの次の仮定
-
$ grep 9418 /etc/services git 9418/tcp # Git Version Control System
- inetdサーバーとしてのgit daemon
-
/pub/foo
または/pub/bar
内の任意のリポジトリを処理するinetdサービスとしてgit daemonを設定するには、次のようなエントリを/etc/inetd
にすべて1行で記述しますgit stream tcp nowait nobody /usr/bin/git git daemon --inetd --verbose --export-all /pub/foo /pub/bar
- 仮想ホスト用のinetdサーバーとしてのgit daemon
-
www.example.com
とwww.example.org
という異なる仮想ホストのリポジトリを処理するinetdサービスとしてgit daemonを設定するには、次のようなエントリを/etc/inetd
にすべて1行で記述しますgit stream tcp nowait nobody /usr/bin/git git daemon --inetd --verbose --export-all --interpolated-path=/pub/%H%D /pub/www.example.org/software /pub/www.example.com/software /software
この例では、ルートレベルディレクトリ
/pub
には、サポートされている各仮想ホスト名に対応するサブディレクトリが含まれます。さらに、両方のホストはリポジトリを単にgit://www.example.com/software/repo.git
として宣伝します。1.4.0より前のクライアントの場合、/software
から適切なデフォルトリポジトリへのシンボリックリンクを作成することもできます。 - 仮想ホスト用の通常のデーモンとしてのgit daemon
-
IPアドレスに基づいて複数の仮想ホストのリポジトリを処理する通常の(inetdではない)サービスとして
git
daemon
を設定するには、デーモンを次のように起動しますgit daemon --verbose --export-all --interpolated-path=/pub/%IP/%D /pub/192.168.1.200/software /pub/10.10.220.23/software
この例では、ルートレベルディレクトリ
/pub
には、サポートされている各仮想ホストのIPアドレスに対応するサブディレクトリが含まれます。リポジトリには、これらのIPアドレスに対応していると仮定すれば、ホスト名でもアクセスできます。 - リポジトリごとにサービスを selectively 有効/無効にする
-
リポジトリに対して
git
archive
--remote
を有効にし、git
fetch
を無効にするには、リポジトリ内の設定ファイル(つまり、HEAD
、refs、objectsの隣にあるconfigファイル)に次の記述を含めます。[daemon] uploadpack = false uploadarch = true
環境変数
git
daemon
は、IPアドレスが利用可能な場合、接続してきたクライアントのIPアドレスをREMOTE_ADDR
に設定します。REMOTE_ADDR
は、サービス実行時に呼び出されるフックの環境で利用可能になります。
GIT
git[1]スイートの一部