git push 时引用文件的权限发生改变

git push 时引用文件的权限发生改变

我最近用 gitolite 设置了一个 Ubuntu 服务器,它基本运行良好。然而,在我下载并设置一个 web-gui (gitlist) 来共享我的存储库后出现了一个问题。

我确信问题在于每次我推送一些更新时,存储库中某些参考文件的文件权限都会发生变化,Apache 无法访问它们(因此,web-gui 将无法访问存储库)。

我安装的时候是按照以下步骤进行的:

  1. 创建一个 git 用户并为该用户设置存储库。
  2. 使用以下命令将www-data用户添加到 git-groupusermod -a -G git www-data
  3. 确保 git 是存储库的组:sudo chgrp -R git repositories/
  4. 在文件夹上使用 chmod 为组中的所有用户授予访问权限:sudo chmod ug+s repositories/

当我使用 git 进行推送时,2-3 个文件的文件权限就会发生更改(例如'/repository/[名称]/refs/head/master'文件)并将其设置为-rw-------,只有 git 用户可以访问该文件。其他用户都无法在此处读取或写入。

我希望chmod 755在执行 git push 之后这些文件能够保留给定的权限(例如),这样我就不需要在每次有人推送时更新权限。

答案1

由于这是一个问答网站,我经过大量的谷歌搜索后找到了答案并解决了这个问题。

基本问题可以追溯到设置的 umask,它在推送时屏蔽了所有文件 - 我必须更改它。为此,我做了以下操作:

打开我的存储库根目录中的 .gitolite.rc 文件并设置变量:

$REPO_UMASK = 0022 

(将 Umask 设置为您想要的掩码)。此后,我的文件不会被剥夺组的读取权限。

相关内容