2012-03-28 129 views
2

我已經在Ubuntu服務器上設置了一個gitolite repo,該服務器旨在讓開發人員克隆/推送我們將要開發的項目。我在回購後收到掛鉤信息時遇到問題。我有一個post-receive鉤子,在特定的repo中查看服務器上的特定目錄,在我的情況下是/ home/user/www/projects /。問題是,當一個管理員推回一個回購(git push origin)時,鉤子將項目成功檢出到指定的目錄,並更改正在檢出的目錄(項目)的權限。但是,如果普通用戶推入回購站,那麼掛鉤會在不更改權限的情況下完整檢查項目。我已經在服務器上檢查了0002的umask,這不應該成爲問題。我卸載並重新安裝gitolite,但仍然有相同的問題。gitolite和文件權限

回答

4

如「Git CHMOD post-receive hook」中所述,與Git回購相關的權限本身可能很重要。

在Gitolite中,該權限配置爲.gitolite.rc as $REPO_UMASK$UMASK(現在爲'$UMASK',現在爲GitoliteV3 or'g3')。
檢查一下,不影響您的結賬問題:

默認UMASK是gitolite使用,使所有的回購及其內容有rwx------權限。想要運行gitweb的人意識到這是行不通的。

解決這個問題的正確方法是給這個變量賦值如0027(注意語法:需要領先的0),然後讓用戶運行webserver(apache,www-data,whatever)a 'git'組的成員。

如果您已經安裝gitolite然後現有文件將不得不手動搞掂(對於umask0027,這將是chmod -R g+rX)。
這是因爲umask隻影響新創建文件的權限,而不是現有文件的權限。

+0

謝謝澄清這一點。我將.gitolite.rc中的變量$ REPO_UMASK更改爲0027.我注意到它將權限更改爲drwx-rx ---所以我的猜測是umask值是錯誤的。我要研究正確的權限。謝謝你的幫助! – jmdesigner81 2012-03-29 05:17:43

+0

@ jmdesigner81當然,如果'0027'不適合你,請爲'$ REPO_MASK'值嘗試原始的umask值'0002'。 – VonC 2012-03-29 05:32:18

+1

謝謝!它的工作我欣賞它。我要在我的博客上寫一篇關於將gitolite設置爲設計者的文章。我是一名設計師。再次感謝! :) – jmdesigner81 2012-03-29 16:35:44