【发布时间】:2011-10-28 12:24:25
【问题描述】:
我已经设置了 Git 和 Gitolite,在某个时候我记得在其中一个配置文件中看到了“umask”设置。这是否设置了我使用 Git 同步的所有文件的权限?这正是我所需要的。我在哪里可以找到它?
【问题讨论】:
标签: git permissions gitolite umask
我已经设置了 Git 和 Gitolite,在某个时候我记得在其中一个配置文件中看到了“umask”设置。这是否设置了我使用 Git 同步的所有文件的权限?这正是我所需要的。我在哪里可以找到它?
【问题讨论】:
标签: git permissions gitolite umask
umask settings in Gitolite 用于更改新创建的存储库的 umask(而不是关于这些存储库在版本中管理的文件)。
见gitolite.rc doc:
$REPO_UMASK,八进制,默认 0077gitolite 使用的默认
UMASK使所有repos 及其内容具有rwx------权限。想跑 gitweb 的人都知道这样不行。处理这个问题的正确方法是给这个变量一个像
0027这样的值(注意语法:需要前导0),然后让用户运行webserver(apache,www-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上报的权限。
另请参阅“How do I share a Git repository with multiple users on a machine?”了解更多信息。
当您在平台之间发生权限冲突时,您还可以选择“instruct git to ignore file permissions changes”(git config core.fileMode false)。
更新:此答案涵盖 gitolite 2。使用 gitolite 3,设置从 $REPO_UMASK 更改为 $UMASK。
【讨论】: