web-dev-qa-db-ja.com

git-daemonがリポジトリにサービスを提供しないのはなぜですか?

ローカルマシンのディレクトリに.gitを設定しました。次に実行します:

mkdir a 
 cd a 
 git init 
 gitデーモン

リポジトリをaに複製しようとすると、次のエラーが発生します。

mkdir b 
 cd b 
 git clone git://127.0.0.1 
 /b/127.0.0.1/.git/ 
で初期化された空のGitリポジトリ致命的:リモートエンドが予期せずハングアップしました

Gitプロトコルを介してリポジトリのクローンを作成するにはどうすればよいですか?

25
Yazz.com

リポジトリをエクスポートする可能性があることをgit-daemonに通知する必要があります。

$ git init --bare/tmp/my-repo.git
/tmp/my-repo.git/

$gitデーモン--verbose-で初期化された空のGitリポジトリ-base-path =/tmp --export-all /tmp/my-repo.git&

$ git clone git:// `hostname`/my-repo.git 
/tmp/my-repo/.git /
で初期化された空のGitリポジトリ警告:空のリポジトリのクローンを作成したようです。

はるかに良い方法は、xinetdから実行することです。の線に沿って/etc/xinetd.d/gitを作成して微調整します

# description: The git server offers access to git repositories
service git
{
        disable = no
        type            = UNLISTED
        port            = 9418
        socket_type     = stream
        wait            = no
        user            = nobody
        server          = /usr/local/bin/git
        server_args     = daemon --inetd --export-all --base-path=/pub/scm
        log_on_failure  += USERID
}

Sudo killall -HUP xinetdすることを忘れないでください。これで、/pub/scmの下にあるすべてのgitリポジトリを、質問した人なら誰でも利用できるようになります。

46
Greg Bacon

git-daemon-export-okという空のファイルをリポジトリに配置するか、git daemonオプションを使用して--export-allを開始する必要があります。

Git-daemonからの引用 manページ

ディレクトリにマジックファイル「git-daemon-export-ok」があることを確認し、この方法でエクスポート用に明示的にマークされていないgitディレクトリのエクスポートを拒否します(--export-allパラメータが指定されている場合を除く) )。いくつかのディレクトリパスをgitデーモン引数として渡すと、オファーをそれらで構成されるホワイトリストにさらに制限できます。

13
Fabian Jakobs