Quiero usar la extensión ACL para permitir que solo el equipo de control de calidad realice envíos y confirmaciones en la rama estable, sin imponer restricciones a otras ramas. Sin embargo, no veo cómo hacer eso con las listas de denegar y permitir, ya que me parece que necesitaría poder especificar en [acl.deny.branches] una entidad que sea equivalente a "todos los usuarios excepto grupo ____", lo cual no creo que sea posible. El conjunto de todos los usuarios y otras ramas está abierto y no se conoce de antemano (solo se conoce el conjunto de personas de control de calidad y la rama restringida), por lo que no puedo enumerar todos los usuarios en una lista de denegación para la rama restringida. , o todas las ramas = * en una lista de permitidos.
Además, cuando uso la extensión ACL, ¿debería desactivar enable_push = * en hgweb.config/hgrc? No sé si eso, o la extensión ACL, tiene prioridad. He visto en una lista de correo de 2011 que la directiva hgrc tiene prioridad, pero puede ser incorrecta o estar desactualizada, así que me gustaría confirmarlo.
[Editar]
Veo que otros se han encontrado con este tipo de problema:http://mercurial.808500.n3.nabble.com/PATCH-acl-support-negating-the-list-of-users-groups-with-leading-quot-quot-td2447281.html Al final de este hilo, no parece que se haya decidido nada.
Respuesta1
Por recomendación del canal #mercurial, miré la fuente de la extensión. Y, efectivamente, la negación es apoyada por el !
operador. La solución entonces fue tan simple 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
He editado la documentación wiki enhttp://mercurial.selenic.com/wiki/AclExtensionpara notar la capacidad de negar.