2013-02-15 40 views
4

我有一个git仓库,我正在与几个开发人员共享。我们会定期进行git pull并推动它。不幸的是,每次我执行git pull时,更改的文件都将失去组写入权限。如何阻止git这样做?Git不断删除组写入权限

我在Ubuntu 12.04 LTS上运行这个。

上的共享回购的配置是这样的:

[core] 
     repositoryformatversion = 0 
     filemode = true 
     bare = true 
     sharedRepository = group 

我也跑在它下面的命令,试图修复它

find repo.git -type d -exec chmod g+rws {} + 
sudo chmod -R g+rw repo.git/objects 

不管我最终的文件夹与755和文件与644时,我分别想要775和664。

+1

我已经是被这解决了类似的问题http://stackoverflow.com/questions/5306768/file-permission-issues -with-sharing-git-remote-repository – Magnus 2013-02-15 18:56:06

+0

我试过了,组写权限一直在消失。这就是为什么我分开问这个问题的原因。 – 2013-03-01 18:39:04

回答

2

你可以用类似的东西做的Git挂钩:

#!/bin/sh 
# 
# .git/hooks/post-merge 

sudo chmod -R g+rw * 

这是每一个混帐拉后调用,文件(git的/挂钩/后合并)必须是可执行的

+2

恕我直言,不是一个很好的答案,因为'sudo'不适用于很多人。 – 2014-09-05 23:14:52

+1

如果您有权执行'chmod' – 2014-09-15 10:30:10

1

您应该使用core.sharedRepository=groupcore.sharedRepository=0664设置。

参见例如http://criticallog.thornet.net/2010/01/07/sharing-your-git-repository/

+0

,您可以删除'sudo'我必须试试这个。 – 2013-12-03 17:10:32

+0

我必须承认,在设置时我写了这个,它不适用于我*脸红*。我不知道我是否正确设置它,因为它似乎是为链接作者 – w00t 2013-12-04 11:28:16

+0

工作当使用'git init --shared'时,它添加配置选项'core.sharedrepository = 1',这大概与'true'相同或'group'。我开始认为这只适用于存储库,但不适用于工作文件,因为它还添加了'receive.denyNonFastForwards'。 – w00t 2013-12-04 11:37:21

0

有问题的用户也需要有自己的umask设置为002