2011-08-12 76 views
4

我正在嘗試爲我們的團隊評估git,其中一個要求是使用HTTPS作爲傳輸方法。我一直試圖遵循git-http-backend文檔以及一些關於使用新的智能HTTP傳輸進行設置的稀少博客,但我只是沒有得到它的工作。我知道這可能是愚蠢的,但我已經絞盡腦汁,無濟於事。不要假設你有任何真正的知識,我對這個工具很陌生。權限不足通過智能HTTP推送Git共享回購


現在我可以克隆通過HTTP就好了,但是當我嘗試和推動下,客戶端獲取:

$ git push 
Username: 
Password: 
Counting objects: 4, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (3/3), 291 bytes, done. 
Total 3 (delta 0), reused 0 (delta 0) 
error: unpack failed: unpack-objects abnormal exit 


服務器Apache的錯誤日誌中說:

error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object


Apache配置:

SetEnv GIT_PROJECT_ROOT /opt/git 
SetEnv GIT_HTTP_EXPORT_ALL 
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ 

<Location /git> 
     AuthType Basic 
     AuthName "Private Git Access" 
     Require valid-user 
     AuthUserFile /opt/git/passwords 
</Location> 


顯然,我的第一個念頭是文件權限,所以我做了一個快速喬敦 - R的阿帕奇中:/ opt/git的

# ls -l /opt/git 
drwxr-xr-x. 7 apache apache 4096 Aug 12 11:06 project.git 

但我仍然得到同樣的錯誤。

謝謝,我非常感謝任何幫助,我可以得到這一點。

+0

這最終成爲了SELinux阻止來自Apache的寫入目錄。 – bfos

回答

1

嘗試運行:

git repo-config core.sharedRepository true 

這已經解決了我的類似問題。從文檔:

core.sharedRepository

If true, the repository is made shareable between several users in a group (making sure all the files and objects are group-writable).

可以驗證步驟,這裏給出(這絕對是一個權限/組問題):

http://parizek.com/?p=177

+0

謝謝,但不幸的是,這似乎並沒有解決這個錯誤。 #混帳回購配置core.sharedRepository真正 #貓配置 [核心] \t repositoryformatversion = 0 \t FILEMODE =真 \t裸=真 \t sharedRepository =真 – bfos

+0

@bfos - 更新我的答案。 – manojlds

+0

我在這裏假設,這是發生在服務器下的Apache進程用戶(阿帕奇)。 $ groups apache =「apache:apache」。在apache中將所有(3)命令都作爲組發出 - 同樣的錯誤。我竟然給每個人的權限,以整個回購和仍然相同的錯誤! – bfos

1

該解決方案可能在服務器上存儲庫的組權限中。

  1. CD到/ opt /的git
  2. 須藤chgrp命令 - R的阿帕奇project.git

我的事情阿帕奇通常運行作爲WWW的數據,而不是Apache,因此該組可能是錯的也

我使用的gitosis和管理通過服務器帳戶,而不是Apache的帳戶,但解決了我同樣的問題,與這種解決方案

+0

我一直認爲它一定是沿着這些線的東西,但它似乎並不想工作。我使用的這個發行版(CentOS)以「apache」運行。從文章中的'ls'你可以看到用戶和組都是「apache」,但爲了安全起見,我做了一個明確的遞歸chgrp,但仍然是相同的錯誤。除此之外,使用gitosis/gitolite進行設置將是下一步,希望能夠融入我們的Atlassian Crowd SSO目錄。 – bfos