當我從我的存儲庫中提取更改時,Git更改文件權限(實際上,他更改了組write
權限)。防止Git更改拉取權限
如果我是正確的,Git應該只跟蹤可執行位,並且無論如何可以使用設置core.filemode
將其刪除爲false。
但是,雖然文件模式設置爲false(在本地,全局和用戶),但是當我拉動時,write
權限不斷變化。
我可以使用git-hooks來重置正確的chmod,但這是一些開銷,我寧願如果有辦法讓git完全忽略文件模式更改。
任何人都知道如何做到這一點?
當我從我的存儲庫中提取更改時,Git更改文件權限(實際上,他更改了組write
權限)。防止Git更改拉取權限
如果我是正確的,Git應該只跟蹤可執行位,並且無論如何可以使用設置core.filemode
將其刪除爲false。
但是,雖然文件模式設置爲false(在本地,全局和用戶),但是當我拉動時,write
權限不斷變化。
我可以使用git-hooks來重置正確的chmod,但這是一些開銷,我寧願如果有辦法讓git完全忽略文件模式更改。
任何人都知道如何做到這一點?
一個配置這裏設置,威力幫助core.sharedRepository
,在博客文章「Preserving Group Write on Git Objects in a Collaborative Repository」提出:
該解決方案被證明是相當簡單的。
在文件.git/config
,我添加了一行,上面寫着:「sharedRepository = group
」,就像這樣:[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true sharedRepository = group
此後,在
.git/objects
新文件用組的寫入適當的權限創建。 (但是,請注意,新文件由通過其接收推送的用戶帳戶的主要羣組擁有,如果在項目上協作的用戶具有不同的主要羣組,並且這些用戶不共享該羣組的成員資格組集合,你可能仍然會碰到的問題)
確保的價值的umask
:
例如:
0660
將使回購讀/寫,能爲貨主和團體,但其他人無法訪問(相當於團體,除非umask
是例如0022
)。
我使用的解決方案是run the command as the user有你想保留的權限:
sudo -u user command
在這種情況下,它可能是:
sudo -u www-data git pull
www-data
being the apache default user on Ubuntu at least。
這可以防止更改權限。在更新我的VPS上的git存儲庫時使用它,同時將文件權限設置爲Web服務器用戶。
有趣。我必須測試一下。 +1 – VonC
另請參閱https://groups.google.com/forum/?fromgroups=#!topic/repo-discuss/QrJII6gTLGM on the'umask'(或http://serverfault.com/questions/26954/how-做一個共享一個git-repository-with-multiple-users-on-a-machine) – VonC
嘿謝謝!我的麻煩不是關於.git/objects,而是關於repo的文件,但是你對umask的評論是正確的。默認情況下,將'umask'設置爲'002'允許組寫入權限。 –