Mercurial ACL 扩展:允许除仅适用于特定用户的分支之外的所有分支上的所有用户

Mercurial ACL 扩展:允许除仅适用于特定用户的分支之外的所有分支上的所有用户

我想使用 ACL 扩展来仅允许 QA 团队向稳定分支推送和提交内容,同时不对其他分支施加任何限制。但是,我不知道如何使用拒绝和允许列表来实现这一点,因为在我看来,我需要能够在 [acl.deny.branches] 中指定一个相当于“除组 ____ 之外的所有用户”的实体,我认为这是不可能的。所有用户和其他分支的集合是开放的,并且事先是未知的(只知道 QA 人员的集合和一个受限制的分支),所以我不能只在受限制分支的拒绝列表中列出所有用户,或者在允许列表中列出所有分支 = *。

另外,使用 ACL 扩展时,我是否应该在 hgweb.config / hgrc 中禁用 allow_push = *?我不知道是这个还是 ACL 扩展优先。我在 2011 年的邮件列表中看到 hgrc 指令优先,但这可能是错误的或过时的,所以我想确认一下。

[编辑]

我发现其他人也遇到过此类问题:http://mercurial.808500.n3.nabble.com/PATCH-acl-support-negating-the-list-of-users-groups-with-leading-quot-quot-td2447281.html 到这个话题结束时,看上去好像还没有决定任何事情。

答案1

根据 #mercurial 频道的建议,我查看了扩展的源代码。果然,运算符支持否定!。解决方案很简单:

[extensions]
hgext.acl =

[hooks]
pretxncommit.acl = python:hgext.acl.hook
pretxnchangegroup.acl = python:hgext.acl.hook

[acl.groups]
reviewers = Max, Moritz

[acl.deny.branches]
stable = !@reviewers

我已编辑了 wiki 文档http://mercurial.selenic.com/wiki/AclExtension注意否定的能力。

相关内容