Назад | Перейти на главную страницу

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

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

Кроме того, при использовании расширения 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 К концу этой беседы не похоже, что что-то было решено.

По рекомендации канала #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 отметить способность отрицать.