web-dev-qa-db-ja.com

http経由でgit reposを複製することはできません。情報/参照が見つかりません

Gitリポジトリをhttp経由で読み取り専用アクセスできるようにしようとしています。

私のホストシステムではgit-http-backendを使用できないため、これを古いスタイルの方法で行っています。つまり、私は単にベアリポジトリをhttpアクセス可能な場所に配置しています。

git clone --bare <some-remote-location>を使用して、ホスト上にベアリポジトリを正常に作成しました。

ここで、git clone http://my.Host.name/locationを使用してgitに新しいクローンを指定すると、メッセージでrepository not foundが報告されます。

ネットワークトラフィックをキャプチャすると、gitがhttp://my.Host.name/location/info/refsにアクセスしようとしていることがわかります。リポジトリにinfo/refsパスがないため、これは失敗すると予想されます。むしろ、リポジトリルートのすぐ下にinfoおよびrefsディレクトリがあります。

明らかに、クローンされたベアリポジトリは、クライアントの期待どおりに構造化されていません。これがなぜなのか誰か知っていますか?

21
epl

実行する必要があります git update-server-info サーバー上で「ダムプロトコル」が機能するために必要なファイルを生成します。

26
poke

言及されている手順を試してください http/sプロトコルの場合はgit-scmで

基本的に、git clone --bare <path-to-repository>を実行した後、ベアリポジトリでmv hooks/post-update.sample hooks/post-updateを実行し、git update-server-infoを1回実行すると、リポジトリのクローンを作成できるようになります。

10
mu 無

リモートがgitリポジトリ1.7.Xで実行されていて、gitクライアントが1.8.Xである場合、この問題が発生しました。クライアントを1.7.Xにダウングレードすることでそれを証明しました-これで問題が解決しました。したがって、gitが「クライアント」側と「サーバー」側で同じバージョンであることを確認してください。私が実行していたコマンドはgit cloneでした。

1
idej1234

必要なモジュールがApacheで有効になっていることを確認することも忘れないでください。これらはHTTP経由のgitに必要なモジュールです。

  • mod_alias
  • mod_cgi
  • mod_env
0
Marcs

間違ったパスを設定したため、gitlab projectを複製しようとして同じエラーが発生しました!
SSHパスの代わりにHTTPパスを使用しました。 (+ .git

git clone *HTTP_path.git*
0
qfazille