Git not honouring umask



>我有一个掩码设置为0002,并且我已经用chmod g+rws设置了项目的所有目录,并将文件设置为chmod 664

因此,当我手动创建一个新目录时:

$ mkdir foo
$ ls -ld foo
drwxrwsr-x 2 william www-data 4096 Jan 11 21:20 foo

当我手动创建文件时:

$ touch foo/bar
$ ls -lh foo/bar 
-rw-rw-r-- 1 william www-data 0 Jan 11 21:21 foo/bar

以上两者都符合预期(我希望 www-data 组中的其他人能够修改它们)。

然而:

每当我使用 composer install 签出多个 git 存储库并创建新文件和目录时,我都会获得奇怪的权限:

drwxr-sr-x 2 william www-data 4.0K Dec 26 12:24 foo
-rwxr-xr-x 1 william www-data 3103 Dec 26 03:53 foo/bar

(两者都应该是组可写的,并且文件被授予他们不应该拥有的可执行权限)。

此外,git config core.fileMode设置为在部署服务器上false(我收集的仅涵盖可执行位,而不是读取和写入)。

任何建议可能发生了什么?

在这种情况下,我正在使用作曲家来部署WordPress - wpackagist - 存储库,如果源存储库有任何相关性。

(Debian Jessie, bash shell)

默认情况下,Git 遵循用户设置的掩码。其他内容(如部署期间的另一个程序或 shell 配置)可能设置为其他值,从而导致差异。

但是,让 Git 使用特定模式签出文件的最简单方法是设置 core.sharedRepository ,在本例中为 0664 。然后,Git 将始终使用这些权限写入文件,而不考虑用于调用它的掩码。

最新更新