Apache-2.2
僅在 ubuntu 伺服器上帶有 apache 的 git 儲存庫 .git 路徑
我有一個執行 apache2 的 ubuntu 伺服器。我正在嘗試將其設置為通過 http 為 git 儲存庫提供服務。
在閱讀了數十個範例之後,我以非常簡化的配置文件結束,為簡單起見刪除了所有身份驗證。
我在 conf.d 中的 git_conf 文件如下所示:
SetEnv GIT_PROJECT_ROOT /srv/repos/git/ SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/lib/git-core/git-http-backend/ <Location /git> </Location>
我創建了一個空的 git 儲存庫,如下所示:
# git --bare init myrepo # cd myrepo # git --bare update-server-info # cd .. # chown -R www-data:www-data myrepo
現在,樂趣開始了。我能夠在本地機器上複製 repo:
# cd ~/tmp # git clone /my/repo/path/myrepo test1
但是,每當我嘗試像這樣從遠端機器複製時:
$ git clone http://myserver/git/myrepo test1
我收到:
fatal: http://cfs-int-redmine/git/iosdemo/info/refs not found: did you run git update-server-info on the server?
如果在伺服器上,我創建一個指向 repo 的符號連結,例如:
# ln -s myrepo myrepo.git
然後我嘗試複製http://myserver/git/myrepo.git,它可以工作。
發生什麼了?我應該離開使用“.git”以便能夠使用儲存庫嗎?沒有.git,我如何讓它工作?
通常,任何主機都會使用該
.git
後綴。從技術的角度來看,我並不認為它是必需的,但在這一點上它是一個非常根深蒂固的標準,你自己的測試似乎證實了git
這一點。目錄名稱上的.git
後綴將目錄標記為 git 裸儲存庫,類似於該.git
文件夾用於將 git 儲存庫資訊儲存在非裸儲存庫中的方式。
這個問題的另一個解決方案也是 100% 確保您的ScriptAlias指向正確的git-http-backend位置。
SetEnv GIT_PROJECT_ROOT /data/git/ SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/