在Git/Gitolite中设置umask

use*_*091 15 git permissions umask gitolite

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

Von*_*onC 20

Gitolite中的umask设置用于更改新创建的repos的umask(而不是那些repos中版本管理的文件).
请参阅gitolite.rc doc:

$REPO_UMASK,八进制,默认0077

UMASKgitolite使用的默认值使得所有repos及其内容都具有rwx------权限.想要运行gitweb的人意识到这是行不通的.

处理这个问题的正确方法是给这个变量一个值0027(注意语法:前导0是必需的),然后让用户运行web服务器(apache www-data,无论如何)成为'git'组的成员.

如果你已经安装了gitolite,那么必须手动修复现有文件(对于umask或者0027那样chmod -R g+rX).这是因为umask只影响新创建文件的权限,而不影响现有文件的权限.

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

core.sharedRepository
Run Code Online (Sandbox Code Playgroud)

group(或true)时,存储库可在组中的多个用户之间共享(确保所有文件和对象都是可写组的).
all(或worldeverybody),储存库将是可读的所有用户,附加到被group-shareable.
umask(或false)时,git将使用报告的权限umask.

另请参阅" 如何在计算机上与多个用户共享Git存储库? ".

当平台之间存在相对于权限的冲突时,您还可以选择" 指示git忽略文件权限更改 "(git config core.fileMode false).

更新:这个答案涵盖了gitolite 2.使用gitolite 3,设置从$REPO_UMASK仅改为$UMASK.