2013-10-31 54 views
18

我想通過http進行只讀訪問的git存儲庫。無法通過http克隆git repos; info/refs找不到

我這樣做是因爲git-http-backend在我的主機系統上不可用。也就是說,我只是將裸倉庫置於http可訪問的位置。

我使用git clone --bare <some-remote-location>在主機上成功創建了裸存儲庫。

現在,當我指向使用git clone http://my.host.name/location的新克隆時,消息報告repository not found

當我捕獲網絡流量時,我看到git正在嘗試訪問http://my.host.name/location/info/refs。這可能會失敗,因爲存儲庫中沒有info/refs路徑。直接在存儲庫根目錄下有inforefs目錄。

很明顯,克隆裸倉庫的結構並不像客戶期望的那樣。有誰知道這可能是爲什麼?

回答

23

您需要在服務器上運行git update-server-info以生成「啞協議」工作所需的文件。

+1

此外,你需要做的這一個純倉庫 – Luc

10

嘗試提及的步驟here on git-scm for http/s protocol

基本上,做git clone --bare <path-to-repository>後,你需要運行mv hooks/post-update.sample hooks/post-update withing你的裸庫,然後做一個git update-server-info一次,那麼你就應該能夠克隆回購。

1

我有這個問題,當遠程運行在git倉庫1.7.X和git客戶端是1.8.X;我通過將客戶端降級到1.7.X來證明這一點 - 這解決了問題。所以請確保git在「客戶端」和「服務器」端是相同的版本。我運行的命令是git clone。

+0

我有同樣的問題,它竟然是因爲服務器發送的charset = UTF-8。請參閱https://github.com/takezoe/gitbucket/issues/20 – AlexDev

0

還要記住檢查所需的模塊是否在apache上啓用。這些是混帳所需的模塊通過HTTP:

  • mod_alias中
  • mod_cgi一樣
  • mod_env
0

我有同樣的錯誤嘗試克隆gitlab項目,因爲我設置了錯誤的道路!
我參加了SSH路徑而不是HTTP路徑。 (+別忘了.git

git clone *HTTP_path.git*