2012-10-04 53 views
12

當我從我的存儲庫中提取更改時,Git更改文件權限(實際上,他更改了組write權限)。防止Git更改拉取權限

如果我是正確的,Git應該只跟蹤可執行位,並且無論如何可以使用設置core.filemode將其刪除爲false。

但是,雖然文件模式設置爲false(在本地,全局和用戶),但是當我拉動時,write權限不斷變化。

我可以使用git-hooks來重置正確的chmod,但這是一些開銷,我寧願如果有辦法讓git完全忽略文件模式更改。

任何人都知道如何做到這一點?

回答

8

一個配置這裏設置,威力幫助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)。

+1

另請參閱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

+2

嘿謝謝!我的麻煩不是關於.git/objects,而是關於repo的文件,但是你對umask的評論是正確的。默認情況下,將'umask'設置爲'002'允許組寫入權限。 –