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
ディレクトリがあります。
明らかに、クローンされたベアリポジトリは、クライアントの期待どおりに構造化されていません。これがなぜなのか誰か知っていますか?
実行する必要があります git update-server-info
サーバー上で「ダムプロトコル」が機能するために必要なファイルを生成します。
言及されている手順を試してください http/sプロトコルの場合はgit-scmで 。
基本的に、git clone --bare <path-to-repository>
を実行した後、ベアリポジトリでmv hooks/post-update.sample hooks/post-update
を実行し、git update-server-info
を1回実行すると、リポジトリのクローンを作成できるようになります。
リモートがgitリポジトリ1.7.Xで実行されていて、gitクライアントが1.8.Xである場合、この問題が発生しました。クライアントを1.7.Xにダウングレードすることでそれを証明しました-これで問題が解決しました。したがって、gitが「クライアント」側と「サーバー」側で同じバージョンであることを確認してください。私が実行していたコマンドはgit cloneでした。
必要なモジュールがApacheで有効になっていることを確認することも忘れないでください。これらはHTTP経由のgitに必要なモジュールです。
間違ったパスを設定したため、gitlab projectを複製しようとして同じエラーが発生しました!SSH
パスの代わりにHTTP
パスを使用しました。 (+ .git
)
git clone *HTTP_path.git*