Git不尊重Umask

时间:2019-01-11 21:47:19

标签: git permissions composer-php

我将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(我收集的信息仅涵盖可执行位,不包括读写)。

有什么建议吗?

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

(Debian Jessie,bash shell)

1 个答案:

答案 0 :(得分:0)

默认情况下,Git支持用户设置的umask。可能将其他内容(例如另一个程序或部署过程中的shell配置)设置为其他值,这导致了差异。

但是,让Git使用一种特定的模式签出文件(听起来像您想要的)的最简单方法是设置core.sharedRepository,在这种情况下设置为0664。然后,Git将始终使用具有这些权限的文件来编写文件,而不管用于调用它的umask如何。