[更新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 = no
或gitweb = 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 = no
和gitweb = 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訪問?
不作爲你的問題的答案,但我聽說'gitolite'是新的,仍然保持(和更多的功能)版本的gitosis。 – ikanobori 2010-09-15 22:30:40