2015-06-05 40 views
2

我在我的服務器上創建git存儲庫。我的要求是,我必須在服務器上創建多個git存儲庫,我必須使用用戶名和密碼來保護它們。git-http-backend通過http推送代碼導致問題

由於有多個git存儲庫被創建,我將.htpasswd和.htaceess放在每個git存儲庫文件夾中以保護它們。

下面是我正在做的整個流程。

a)使用git -bare創建git存儲庫。
b)在該文件夾中創建.htpasswd和.htaccess以進行身份​​驗證 c)現在我可以使用用戶名和密碼在任何地方克隆該回購站。

但是當我嘗試從克隆的推動回購它扔我一個錯誤: 錯誤:無法訪問URL http://192.168.1.2/projects/gitcreation/gitrepos/6/project6/,返回碼22 致命:混帳HTTP推送失敗

任何幫助將高度讚賞。

回答

0

我最初建議刪除gitolite的推/拉呼叫(見下文),但OP希望保持直接呼叫。

Jiva懷疑git-http-backend未被呼叫推送(其中wouldn't work well indeed)檢查for instance this configthis one

另一個檢查將是.gitconfig of the bare repohttp.receivepack

由於這thread illustrates,這個問題可能是一個證書一個(密碼不正確,或密碼與它特殊字符時,錯誤地解釋)


原始答案。

而不是依靠.htaccess/.htpasswd每一個混帳回購協議的,最好是打電話gitolite,一個authorization layer用Perl(very easy to install),它可以根據阿帕奇進行認證,授予回購。

有關更多信息,請參閱「What is gitolite」。

見我httd.conf for example(忽略@[email protected],他們是模板佔位符,要由實際值以後替換)

<VirtualHost @[email protected]:@[email protected]> 
    ServerName @[email protected] 
    ServerAlias @[email protected] 
    SetEnv GIT_PROJECT_ROOT @[email protected]/repositories 
    SetEnv GIT_HTTP_EXPORT_ALL 
    SetEnv GITOLITE_HTTP_HOME @[email protected] 
    ScriptAlias /hgit/ @[email protected]/sbin/gitolite-shell/ 
    SetEnv GIT_HTTP_BACKEND "@[email protected]/usr/local/apps/git/libexec/git-core/git-http-backend" 
    <Location /hgit> 

這裏,任何/hgit URL(/projects你),/home/git/sbin/gitolite-shell被調用。
如果gitolite授予用戶訪問回購的權限,它將調用GIT_HTTP_BACKEND,這是git/libexec/git-core/git-http-backend所在的位置。

Gitolite允許您設置many access rules每個回購,甚至每個分支或每個文件!

+0

Vonc - 唯一的最後一個問題是我們無法將代碼推到git即git-http-backend沒有被調用或有些丟失。否則每件事都被照顧。 另外gitolite提供了一個web界面。所以這對我們來說是非常好的。 – Jiva

+0

@Jiva gitolite不提供Web界面,所以它應該仍然是一個有效的選項。 – VonC

+0

好吧,但我們現在不得不改變我們所有的實現來實現它。我們只是停留在最後一點,我們的git-http-backend沒有被調用。 – Jiva