Gitolite如何允许对所有分支进行完全访问,但限制特定集合的访问?

3
我希望配置gitolite,以便:
  1. 开发者无法推送到主分支和stage1分支
  2. 开发者可以对所有其他分支(任何名称)进行读写操作
我想到的最好的方法是:
repo foo bar

    RW        = @developers
    R  master = @developers
    R  stage1 = @developers

但是第一个规则允许开发人员完全访问所有分支。那么如何做到呢?

1个回答

2

按照这个例子,那些访问规则的顺序应该是(正常然后VREF):

-  master = @developers
-  stage1 = @developers
RW        = @developers

查看"访问控制规则匹配"以获取准确的访问控制规则应用方法。

自gitolite 3.6.1起,您可以快速轻松地跟踪此逻辑:

gitolite access -s foo adeveloper W any

更普遍地说,您的初始设置应该可行:
正如Mort所评论的那样,这里没有VREF规则,只有“refex”规则,因为它们适用于存储库中的真实引用。
由于没有提供refex,它默认为refs/.*

1
@Nathan 好的。根据文档,你最初的命令是正确的。我已经编辑了我的答案,添加了相关的文档。gitolite access -s foo adeveloper W any 对你来说会返回什么? - VonC
@VonC 你确定那是正确的顺序吗?肯定会给@developers访问所有内容的权限。第一个匹配成功的规则将赋予他们对任何东西的读写访问权限。我认为你应该首先进行拒绝操作。此外,这些不是VREF规则,它们是"refex"规则,因为它们适用于仓库中的真实引用;VREF规则实际上在其中有"VREF",因为它们不是真实的引用,只是虚拟的引用。 - Mort
@Mort 考虑到 http://gitolite.com/gitolite/conf.html#access-control-rule-matching,对于“push”操作有第二个检查,拒绝规则应该适用。 - VonC
@Mort 但是,我可以看到规则是按顺序检查的http://gitolite.com/gitolite/conf.html#c1c2。我刚刚测试并恢复了顺序。 - VonC
@VonC,RW中的W会在推送操作中进行测试。规则按顺序进行检查,但正如您在图表中看到的那样,一旦遇到允许操作的成功规则,就会进入“ALLOW Access”状态。 - Mort
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接