我有一个临时站点,它是一个git存储库的工作目录。如何设置git,让开发人员在不更改修改文件组的情况下提取分支或发布?
举个例子。假设我有两个开发者,罗宾和大卫。它们都属于git用户组,所以最初它们都可以在site.php上拥有写权限。
-rw-rw-r-- 1 robin git-users 46068 Nov 16 12:12 site.php
drwxrwxr-x 8 robin git-users 4096 Nov 16 14:11 .git在robin-server1$ git拉原主之后:
-rw-rw-r-- 1 robin robin 46068 Nov 16 12:35 site.php
drwxrwxr-x 8 robin git-users 4096 Nov 16 14:11 .git大卫对site.php没有写权限,因为这个组从‘git-用户’变成了'robin‘。从现在开始,当david尝试拉到这个存储库时,他将被拒绝一个许可。
发布于 2012-11-26 09:50:39
最好通过设置所有目录的权限来解决这个问题。如果设置组'setgid‘位,则当组成员修改目录组时,目录中的所有文件都将维护目录组。因此,要在临时站点上快速设置它,请执行以下操作:
chmod g+ws [directory]
find [directory] -type d -exec chmod g+ws {} \;
find [directory] -type f -exec chmod g+w {} \;第一个命令为站点顶层目录上的组设置写位和setgid位。然后,第二个查找顶层文件夹的所有子目录,并执行相同的操作。然后,第三个确保组对所有文件都有写访问权。
在最初创建git存储库时,可以使用--shared选项让它自动完成上述操作:
git create --shared [directory]发布于 2012-11-17 23:11:06
尝试使用git子模块,这应该是您所需的解决方案。
或者,如果您真的不需要它,您可以为此实现一些脚本,这些脚本将在拉出之前保存一些文件,然后弹出它们,但这也会给以后的合并带来问题。
https://serverfault.com/questions/449420
复制相似问题