我已经设置了Git和Gitolite,并且在某些时候我记得曾在其中一个配置文件中看到过“umask”设置。这是否为我使用Git同步的所有文件设置了权限?这正是我所需要的。我在哪里可以找到它?
答案 0 :(得分:20)
umask settings in Gitolite用于更改新创建的repos的umask(而不是那些repos版本中管理的文件)。
见gitolite.rc doc:
$REPO_UMASK
,八进制,默认0077gitolite使用的默认
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
(或all
或world
)时,除了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
。