Расширение Mercurial ACL: разрешить всем пользователям на всех филиалах, кроме одного филиала, который предназначен только для определенных пользователей

Расширение Mercurial ACL: разрешить всем пользователям на всех филиалах, кроме одного филиала, который предназначен только для определенных пользователей

Я хочу использовать расширение ACL, чтобы разрешить только команде QA делать push-уведомления и коммиты в стабильной ветке, не накладывая ограничений на другие ветки. Однако я не вижу, как это сделать с помощью списков deny и allow, поскольку мне кажется, что мне нужно будет указать в [acl.deny.branches] сущность, эквивалентную "всем пользователям, кроме группы ____", что, по-моему, невозможно. Набор всех пользователей и других веток открыт и заранее неизвестен (известен только набор людей из QA и одна ограниченная ветка), поэтому я не могу просто перечислить всех пользователей в списке deny для ограниченной ветки или все ветки = * в списке allow.

Также, при использовании расширения ACL мне следует отключить allow_push = * в hgweb.config / hgrc? Я не знаю, имеет ли оно приоритет или расширение 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отметить способность отрицать.

Связанный контент