当我从我的存储库中拉出更改时,Git更改了文件权限(实际上,他更改了组的write权限)。
如果我是正确的,Git应该只跟踪可执行位,而且无论如何都可以通过将core.filemode设置为false来删除它。
但是,尽管filemode被设置为false (在本地、全局和用户中),但当我拉取时,write权限不断变化。
我可以使用git-hooks来重置正确的chmod,但这是一些开销,我更希望有一种方法可以让git完全忽略文件模式的更改。
有人知道如何做到这一点吗?
发布于 2012-10-05 04:24:10
在这里,一个可能有用的配置设置是core.sharedRepository,它在博客文章“Preserving Group Write on Git Objects in a Collaborative Repository”中介绍:
解决方案被证明是相当简单的。
在文件.git/config中,我添加了一行代码:"sharedRepository = group",如下所示:
核心存储库格式版本=0文件模式= true bare = false对数反转日期= true sharedRepository =组
此后,.git/objects中的新文件被创建为具有适当的组写入权限。
(但是,请注意,新文件由接收推送的用户帐户的主组拥有。如果在项目中协作的用户具有不同的主要组,并且这些用户不共享该组中的成员资格,您可能仍然会遇到问题。)
确保您的 umask的值
示例:
0660将使存储库对所有者和组可读/写,但对其他用户不可访问(除非umask为0022,否则等同于组)。
发布于 2016-06-15 08:42:39
我使用的解决方案是run the command as the user,它具有您想要保留的权限:
sudo -u user command在这种情况下,它可能是:
sudo -u www-data git pullwww-data being the apache default user on Ubuntu at least.
这可以防止权限发生更改。我在VPS上更新git存储库时使用它,同时将文件权限设置为set服务器用户。
https://stackoverflow.com/questions/12733452
复制相似问题