Automatización de solicitudes de revisión con ReviewBoard y Mercurial utilizando ganchos de Python

Aquí está mi problema:

Conseguí un repository mercurial remoto donde el gancho se configurará como entrante o como grupo de cambios, y obtuve una configuración ReviewBoard en un servidor diferente. La idea es automatizar la generación de tickets de solicitud de revisión tras la inserción de los desarrolladores en el repository remoto. Por supuesto, necesitaría un enlace que invoque una revisión posterior que también use el envío de usuario que se extrajo con la API de mercurial (ctx.user ()), o de lo contrario, todas las solicitudes de revisión de tickets estarán a nombre del usuario que conecta el repository remoto al servidor reviewboard.

Mi principal dilema es realmente obtener la revisión inicial y la finalización de la revisión, si uso entrante obtendré todos los nodos de conjuntos de cambios pero, por supuesto, el gancho se invoca cada vez que no hay un estado entre cada invocación. Por otro lado, si uso changegroup, solo obtengo el primer conjunto de cambios y no puedo comparar. Además, en comparación, necesito una forma de conservar la sugerencia anterior para enviarla a la revisión posterior básicamente:

post-review --revision-range=previoustip:newtip --submit-as=ctx.user() 

Si tuviera alguna idea sobre cómo resolver el problema, estaría feliz. Estoy escribiendo el gancho en python obviamente.

No estoy seguro de si esto es exactamente lo que necesita, pero esto es algo que uso para ejecutar una verificación de mensajes de confirmación en las mismas circunstancias, tiene que verificar cada cambio y verificar la información basada en el usuario. De la misma manera, necesito verificar el usuario para el que está la lista de cambios, no para el usuario que “empuja”. Debería ser bastante fácil hacer algo como construir los conjuntos de cambios para un usuario en particular y las revisiones de inicio y finalización en ‘trozos’ mientras se repite el ciclo de cambios en el grupo de cambios.

La devolución se debe a que se utiliza como un gancho pretxnchangegroup

 def checkAllCommitMessage(ui, repo, node, **kwargs): """ Checks all inbound changeset messages from a push for adherence to the commit message rules. """ # for each change being submitted # get all the details, and call the trigger fail = False for rev in xrange(repo[node].rev(), len(repo)): # get context (change) ctx = repo[rev] # user who commited the change (NOT necessarily the one who is doing push) user = ctx.user() # do the hook stuff here... # set fail to True if something goes wrong return fail