Linux 为什么git使用错误的权限创建文件?
我希望有人能帮上忙: 我有一个用户:jenkins用户,具有umask 0002,因此文件是用664创建的,如图所示Linux 为什么git使用错误的权限创建文件?,linux,git,jenkins,Linux,Git,Jenkins,我希望有人能帮上忙: 我有一个用户:jenkins用户,具有umask 0002,因此文件是用664创建的,如图所示 touch 1.txt -rw-rw-r--. 1 jenkins-user admin 0 Oct 14 12:04 1.txt 但是,当jenkins用户[从jenkins内部]运行并执行 git pull 作为构建的一部分,创建的文件具有不同的权限644[如图所示] -rw-r--r-- 1 jenkins-user admin 318 Oct 14
touch 1.txt
-rw-rw-r--. 1 jenkins-user admin 0 Oct 14 12:04 1.txt
但是,当jenkins用户[从jenkins内部]运行并执行
git pull
作为构建的一部分,创建的文件具有不同的权限644[如图所示]
-rw-r--r-- 1 jenkins-user admin 318 Oct 14 12:18 2.txt
构建日志还表明。。。创建模式100644
我知道git不会干扰设置权限,只知道文件是否可执行,所以我不确定预期的权限有什么问题,更重要的是,如何纠正这一问题。感谢您在这方面的帮助。Set
git config core.sharedRepository 0660
在服务器端repo。请参阅。您的umask是如何配置的?在shell的启动配置中?如果是这样的话,詹金斯不会知道,因为它不会启动一个交互式shell。您可以尝试从shell(作为jenkins用户)运行git,看看它是否会遵守umask。@爱德华·汤姆森:谢谢,umask设置在服务器上,但我会尝试您的建议,看看会发生什么谢谢您的回答;虽然我还没有尝试,但我确实读到了“…如果没有指定,Git将使用umask报告的权限”-因此,我想知道您是否对为什么在本例中使用git有一些想法。似乎忽略了现有的umask似乎
git init
和git pull
使用不同的umask,可能是因为git init
是在命令行中发出的,而git pull
是在不阅读bash的情况下执行的这个假设听起来像是问题的逻辑原因,尽管我不知道会发生这种情况。git init确实在命令上,而git pull没有。如果是这种情况,您会推荐相同的解决方案还是建议其他解决方案?感谢您对此的帮助。可以在Jenkins中配置Hupsumask
。或者在运行git pull之前的某个地方使用source~/.bashrc
。类似于source~/.bashrc&&git-pull
。甚至umask 002&&git pull
。