15

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

4

1 回答 1

21

Gitolite中的umask 设置用于更改新创建的存储库的 umask(而不是关于这些存储库在版本中管理的文件)。
请参阅gitolite.rc 文档

$REPO_UMASK, 八进制, 默认 0077

gitolite 使用的默认设置UMASK使所有 repos 及其内容都具有rwx------权限。想运行 gitweb 的人意识到这是行不通的。

处理这个问题的正确方法是给这个变量一个类似的值0027(注意语法:前导 0 是必需的),然后让运行网络服务器(apache www-data,等等)的用户成为“git”组的成员。

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

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

core.sharedRepository

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

另请参阅“如何与一台机器上的多个用户共享 Git 存储库? ”了解更多信息。

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

更新:此答案涵盖 gitolite 2。使用 gitolite 3,设置从更改$REPO_UMASK为 just $UMASK

于 2011-08-18T06:54:06.583 回答