2010-09-15 103 views
3

[更新2010年9月16日]管理到Git倉庫http訪問

尋找這個經過昨晚,我意識到,我原來的問題真的問2件獨立的事情:

1 )是否可以爲gitosis創建的所有遠程存儲庫設置更新後的掛鉤(即,在gitosis中創建存儲庫後不需要手動執行mv hooks/post-update.sample hooks/post-update)這對於通過HTTP進行克隆來工作是必需的(愚蠢的HTTP客戶端依靠事實上,git update-server-info是從更新後的掛鉤中調用的)。

2)一旦儲存庫是通過HTTP訪問,是能夠打開和關閉在gitosis.conf的使用選項(類似的東西,以daemon = nogitweb = yes

訪問---用於解決第1個問題---

事實證明,Git使用模板創建新的存儲庫與git init命令。通過在模板目錄中執行mv hooks/post-update.sample hooks/post-update,我的服務器上所有未來呼叫git init將具有正確配置的更新後掛接。 (在OSX模板目錄是/opt/local/share/git-core/templates/對於那些關心)

對於這項工作的另一個要求是在Apache重寫規則轉動,這樣對資源庫中的HTTP克隆URL看起來像http//git.example.com/repo.git

我重寫規則/etc/apache2/extra/httpd-vhosts.conf這個樣子的:

# turning on mod rewrite 
RewriteEngine on 

# make the front page an internal rewrite to the gitweb script 
RewriteRule ^/$ /cgi-bin/gitweb.cgi [L,PT] 

# make access for "dumb clients" work 
RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT] 

---還在尋找一個解決問題2 ...幫助! :) ---

既然HTTP克隆適用於我所有的倉庫,我想知道是否有一種方法來管理使用gitosis的HTTP訪問控制。設置daemon = nogitweb = no會關閉倉庫的git-daemon和gitweb訪問權限,但由於Apache重寫規則仍在,回購仍然可以克隆http://git.example.com/repo.git。任何想法如何使用gitosis來管理?

[我最初發布這個問題]

是否有可能使用的gitosis管理到Git倉庫http訪問?例如,gitosis。CONF我可以使用管理進行的GitWeb和git-妖訪問:

# Allow gitweb to show this repository. 
gitweb = yes 

# Allow git-daemon to publish this repository. 
daemon = no 

我目前能夠通過發出以下命令來克隆我的倉庫:

$ git clone git://git.example.com/repo.git 

然而,當我發出以下命令:

$ git clone http://git.example.com/repo.git 

我收到以下錯誤信息:

fatal: http://git.example.com/repo.git/info/refs not found: did you run git update-server-info on the server? 

但是,如果我登錄到我的服務器和運行從repo.git內的下列:

# From http://progit.org/book/ch4-5.html 
$ cd project.git 
$ mv hooks/post-update.sample hooks/post-update 
$ chmod a+x hooks/post-update 
$ git update-server-info 

然後克隆通過HTTP工作正常。

有沒有什麼辦法可以從gitosis中管理對存儲庫的http訪問?

+0

不作爲你的問題的答案,但我聽說'gitolite'是新的,仍然保持(和更多的功能)版本的gitosis。 – ikanobori 2010-09-15 22:30:40

回答

1

gitweb已經安裝並正在運行?查詢this blog以獲取如何使用gitweb設置gitosis的說明。

順便說一句,Gitolite的主要特點是,你可以擁有非常好的權限。即。控制每個分支的許可。


更新:我認爲gitosis整合瓦特/ gitweb基本上是否它顯示在項目列表中。它不控制gitweb的權限;這是通過web服務器(apache)完成的。

+0

是的,我有gitweb設置和工作正常。我在昨晚看完這個問題後更新了我的問題,應該更清楚我要問什麼 – cdwilson 2010-09-16 17:19:38