Quero usar a extensão ACL para permitir que apenas a equipe de controle de qualidade faça pushes e commits na ramificação estável, sem impor restrições a outras ramificações. No entanto, não vejo como fazer isso com as listas de negação e permissão, pois me parece que precisaria especificar em [acl.deny.branches] uma entidade equivalente a "todos os usuários, exceto grupo ____", o que não creio ser possível. O conjunto de todos os usuários e outras ramificações é aberto e não é conhecido antecipadamente (apenas o conjunto de pessoas de controle de qualidade é conhecido e a ramificação restrita), portanto, não posso simplesmente listar todos os usuários em uma lista de negações para a ramificação restrita. ou todas as ramificações = * em uma lista de permissões.
Além disso, ao usar a extensão ACL devo desabilitar permit_push = * no hgweb.config/hgrc? Não sei se isso, ou a extensão ACL, tem precedência. Vi em uma lista de discussão de 2011 que a diretiva hgrc tem precedência, mas isso pode estar errado ou desatualizado, então gostaria de confirmar.
[Editar]
Vejo que outras pessoas se depararam com esse tipo de problema:http://mercurial.808500.n3.nabble.com/PATCH-acl-support-negating-the-list-of-users-groups-with-leading-quot-quot-td2447281.html Ao final deste tópico, parece que nada foi decidido.
Responder1
Por recomendação do canal #mercurial, procurei a fonte da extensão. E, com certeza, a negação é suportada pelo !
operador. A solução então foi simples como:
[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
Eu editei a documentação do wiki emhttp://mercurial.selenic.com/wiki/AclExtensionobservar a capacidade de negar.