Mercurial ACL 拡張: 特定のユーザー専用の 1 つのブランチを除くすべてのブランチのすべてのユーザーを許可します。

Mercurial ACL 拡張: 特定のユーザー専用の 1 つのブランチを除くすべてのブランチのすべてのユーザーを許可します。

ACL 拡張機能を使用して、他のブランチには制限をかけずに、QA チームだけが安定ブランチにプッシュおよびコミットできるようにしたいと考えています。ただし、拒否リストと許可リストでそれを実現する方法がわかりません。[acl.deny.branches] で「グループ ____ 以外のすべてのユーザー」に相当するエンティティを指定できるようにする必要があるように思われますが、これは不可能だと思います。すべてのユーザーと他のブランチのセットはオープンであり、事前にはわかりません (わかっているのは QA 担当者のセットと 1 つの制限されたブランチだけです)。そのため、制限されたブランチの拒否リストにすべてのユーザーをリストしたり、許可リストにすべてのブランチ = * をリストしたりすることはできません。

また、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

ウィキドキュメントを編集しましたhttp://mercurial.selenic.com/wiki/AclExtension否定する能力に注目する。

関連情報