2014-10-16 100 views
0

我有一個webserver apache2,它可以列出我的計算機的/ var/www目錄中的文件。 我有兩個裸回購repo1.gitrepo2.git。首先是位於/var/www/git/repo1.git,而第二個是一個符號鏈接:通過http克隆鏈接到/ var/www的git repo

/var/www/git/repo2.git -> /other/folder/repo2.git 

現在,如果我用網頁瀏覽器http://myserver.com/git/repo1.git去,我可以看到裸露的回購協議的內部文件,如果我去myserver.com/repo1.git我可以看到類似的文件(我也可以在子目錄中找到)。

我可以克隆repo1.git通過git clone http://myserver.com/git/repo1.git沒有問題。

問題是,當我嘗試克隆repo2.git

fatal: repository 'http://myserver.com/git/repo2.git' not found 

其他信息:

我已經啓用了鉤更新後的兩個回購。 我的apache.conf包括以下內容:

<Directory /var/www/git> 
    Options +FollowSymLinks +SymLinksIfOwnerMatch 
    AllowOverride All 
    order allow,deny 
    Allow from all 
</Directory> 

你有問題可能是什麼什麼想法?

回答

1

恐怕你不能通過http暴露你的文件系統,並希望git工作。

Git內部有一個每個git客戶端都可以理解的API,這有助於Git跟蹤文件系統以外的元信息。

有一個read here(特別是HTTP部分),你就會知道的步驟順序是混帳遵循每個操作(克隆,推等)

如果您需要舉辦自己的Git服務器通過HTTP,我建議像git-webbygitoliteGitlab

如果您的興趣是學術,this blog將帶您通過使用Haskell從頭開始實施git克隆。