我注意到当我从开发服务器(Red Hat)上的github仓库中取出时,拉动完成后文件的所有权会发生变化。 .git文件曾经由我拥有,但后来我发现它会像我一样编写文件,我需要它以不同的用户身份编写文件。所以我改变了.git目录的所有权。
我偶然发现git config core.filemode
这是真的。我从那以后就把它弄错了。将此设置为false后,我没有看到任何区别。我该怎么做才能保证我的文件所有权不变。
这不会发生在我当地。
答案 0 :(得分:27)
如果保留组足够,可以在目录上设置setgid标志。见http://en.wikipedia.org/wiki/Setuid
在目录上设置setgid权限(“chmod g + s”)会导致在其中创建的新文件和子目录继承其组ID,而不是创建该文件的用户的主要组ID(所有者ID为从不受影响,只有组ID)。新创建的子目录继承setgid位。因此,这为组创建了共享工作空间,而没有要求组成员在创建新文件或目录之前显式更改其当前组的不便。请注意,在目录上设置setgid权限只会影响在setgid位设置后创建的新文件和子目录的组ID,并且不会应用于现有实体。在现有子目录上设置setgid位必须使用如下命令手动完成:
[root@foo]# find /path/to/directory -type d -exec chmod g+s '{}' \;
答案 1 :(得分:8)
Git不是部署服务器。它将文件写为谁在编写文件,那就是你。如果你需要权限和所有权设置,你可以做一个post-checkout钩子,让它读取一个配置文件或什么来决定下一步该做什么。