在Git / Gitolite中设置umask

时间:2011-08-16 23:27:26

标签: git permissions gitolite umask

我已经设置了Git和Gitolite,并且在某些时候我记得曾在其中一个配置文件中看到过“umask”设置。这是否为我使用Git同步的所有文件设置了权限?这正是我所需要的。我在哪里可以找到它?

1 个答案:

答案 0 :(得分:20)

umask settings in Gitolite用于更改新创建的repos的umask(而不是那些repos版本中管理的文件)。
gitolite.rc doc

  

$REPO_UMASK,八进制,默认0077

     

gitolite使用的默认UMASK使所有repos及其内容具有rwx------权限。想要运行gitweb的人意识到这不会做。

     

处理此问题的正确方法是为此变量赋予类似0027的值(请注意语法:需要前导0),然后让用户运行Web服务器(apache,{{1} },无论如何)'git'组的成员。

     

如果您已经安装了gitolite,则必须手动修复现有文件(对于umask或www-data,即0027)。这是因为chmod -R g+rX仅影响对新创建文件的权限,而不影响现有文件的权限。

此设置类似于直接创建git repo时使用的设置(不含gitolite):

umask
  

core.sharedRepository (或group)时,存储库可以在组中的多个用户之间共享(确保所有文件和对象都是可写组的)。
  在true(或allworld)时,除了everybody之外,所有用户都可以读取存储库。
  在group-shareable(或umask)时,git将使用false报告的权限。

有关详情,另请参阅“How do I share a Git repository with multiple users on a machine?”。

如果平台之间存在相对于权限的冲突,您还可以选择“instruct git to ignore file permissions changes”(umask)。

更新:这个答案涵盖了gitolite 2.使用gitolite 3时,设置从git config core.fileMode false更改为$REPO_UMASK