在其他人的一些挖掘和帮助之后,我发现我umask
在 git 中的设置有问题。我想要实现的是在我的服务器上签出的任何 git repo,umask
设置默认为 0002。我不想在每个 post-receive 挂钩中配置它......我希望这是默认的umask
. 我该如何做到这一点?
git
我的存储库是通过使用服务器上的用户登录到 ssh 来上传的。当我检查umask
设置时,这已经设置为正确的设置:
root@server:~# su git
git@server:~$ umask
0002
但是,如果我放入umask > /tmp/debug.log
我的 post-receive 钩子,那么该文件将显示umask
0077!是什么导致这种情况有所不同?
根服务器也有相同的,当我检查存储库时,我umask
无法弄清楚为什么不同。umask
如果我更改为git
用户并创建一个文件,那么一切正常:
git@server:~$ touch newfile
git@server:~$ ls -la
total 8
-rw-rw-r-- 1 git git 0 Aug 6 02:17 newfile
-rw------- 1 git git 0 Aug 6 02:16 post
newfile
是我刚刚创建的文件,该post
文件是我通过git签出的文件,显然具有不同的权限。我还添加umask
到 git 用户的 .bashrc 中,但无济于事:
git@server:~$ cat ~/.bashrc
export LANGUAGE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LC_TYPE="en_US.UTF-8"
umask 0002
对于它的价值,我使用 gitolite 来管理我的存储库。
这是我使用的示例接收后挂钩脚本:
#!/bin/sh
export GIT_WORK_TREE=/home/user/www/
git checkout -f