我有一个暂存站点,是一个git仓库的工作目录。 如何设置git让开发人员在不改变修改文件组的情况下提取分支或版本?
一个例子。 比方说,我有两个开发人员,罗宾和大卫。 他们都在git-users组中,所以最初他们都可以在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 pull origin master:
-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-users”变成了“robin”。 从现在开始,大卫将会得到一个被拒绝的权限,当他试图拉到这个仓库。
通过在所有目录上设置权限,最好解决这个问题。 如果将组设置为“sticky”位,那么当组中的成员对其进行修改时,该目录中的所有文件将保留该目录的组。 因此,要快速在暂存站点上设置,请执行以下操作:
chmod g+ws [directory] find [directory] -type d -exec chmod g+ws {} \; find [directory] -type f -exec chmod g+w {} \;
第一个命令设置站点顶层目录中组的写入和粘贴位。 第二个然后find顶级文件夹的所有子目录,并执行相同的操作。 然后第三个确保组有写访问所有的文件。
当你最初创buildgit仓库时,你可以通过使用--shared选项自动完成上述操作:
git create --shared [directory]
尝试与Git子模块,这应该是你需要的解决scheme。
或者如果你真的不需要它,你可以实现一些脚本,这将在拖动之前隐藏一些文件,然后将它们popup,但是这也会使你稍后合并。