我已经设置了 Git 和 Gitolite,在某个时候我记得在其中一个配置文件中看到过“umask”设置。这是否设置了我使用 Git 同步的所有文件的权限?这正是我所需要的。我在哪里可以找到它?
1 回答
Gitolite中的umask 设置用于更改新创建的存储库的 umask(而不是关于这些存储库在版本中管理的文件)。
请参阅gitolite.rc 文档:
$REPO_UMASK
, 八进制, 默认 0077gitolite 使用的默认设置
UMASK
使所有 repos 及其内容都具有rwx------
权限。想运行 gitweb 的人意识到这是行不通的。处理这个问题的正确方法是给这个变量一个类似的值
0027
(注意语法:前导 0 是必需的),然后让运行网络服务器(apachewww-data
,等等)的用户成为“git”组的成员。如果您已经安装了 gitolite,则必须手动修复现有文件(对于 umask 或
0027
,那将是chmod -R g+rX
)。这是因为umask
只影响新创建文件的权限,而不影响现有文件的权限。
此设置类似于直接创建 git repo(没有 gitolite)时的使用:
core.sharedRepository
当
group
(或true
)时,存储库可在组中的多个用户之间共享(确保所有文件和对象都是组可写的)。
当all
(或world
或everybody
)时,所有用户都可以读取存储库,除了group-shareable
.
当umask
(或false
)时,git 将使用 . 报告的权限umask
。
另请参阅“如何与一台机器上的多个用户共享 Git 存储库? ”了解更多信息。
当您在平台之间存在与权限相关的冲突时,您还可以选择“指示 git 忽略文件权限更改”(git config core.fileMode false
)。
更新:此答案涵盖 gitolite 2。使用 gitolite 3,设置从更改$REPO_UMASK
为 just $UMASK
。