Gitは、inetdモードとスタンドアロンモードで実行できます。 しかし、今、あなたが望むのは同僚にあなたのからpullさせることだけなので、Gitサーバーを本当に素早くセットアップする必要がある訳ですよね?
注意: 現時点では、特に物事が計画どおりに進まない場合(たとえば、ソケットをバインドできなかった場合)、git-daemonは実際にはおしゃべりではないことに注意してください。
この警告を言い換えると、以下を実行した場合
$ git ls-remote git://127.0.0.1/rule-the-world.git
あなたは以下のようなメッセージを拝む事になります
fatal: The remote end hung up unexpectedly
それは「何か」がうまくいかなかったことを意味するだけです。何がうまくいかなかったかを知るには、サーバーに問い合わせる必要があります。 (Gitはセキュリティ対策のため、より正確なメッセージを出すことを拒否します。今すぐ靴を脱いでください。ポケットにコインがありますか? 申し訳ありませんが、それは許可されていません。あなたがそれらをどうするつもりか誰か知っていますか?)(訳注:「今すぐ靴を脱いでください。ポケットにコインがありますか…」…セキュリティ要員が靴の中やポケットの中のモノを確認する時の常套句)
これらの2つの警告とともに、以下の例を見てみましょう:
$ git daemon --reuseaddr --verbose --base-path=/home/gitte/git \
--export-all -- /home/gitte/git/rule-the-world.git
(もちろん、ユーザー名が gitte
かつ あなたのリポジトリが ~/rule-the-world.git にない限り、パスを調整する必要があります。リポジトリがbareでない場合は、 .git ディレクトリへのパスを入力する必要があることに注意してください!)
この呼び出しは、アドレスがすでに取得されている場合、そのアドレスを再利用しようとします(これにより、デバッグを節約できます。そうしないと、git-daemon を強制終了して再起動すると、ソケットへのバインドにサイレントに失敗する可能性があるためです)。
また、誰かが実際にそれに接続するとき、それは(比較的)冗長です。また、ベースパス(base path)も設定します。つまり、このデーモンを使用してアクセスできるすべてのプロジェクトは、そのパス内またはその下に存在する必要があります。
オプション --export-all
は、エクスポートされた各リポジトリに git-daemon-export-ok
という名前のファイルを作成する必要がないことを意味します。(そうしないと、 git-daemon は大声で文句を言い、協力を拒否します。)
最後に、エクスポートする必要のあるリポジトリを指定します。 "--" 区切りの後にパスを配置することをお勧めします。
次に、デーモンをテストします
$ git ls-remote git://127.0.0.1/rule-the-world.git
これが機能しない場合は、その理由を調べて、このドキュメントにパッチを送信してください。