Hook Mercurial para integración con Hudson

mercurialINGSOFT

En esta receta se explica como configurar un hook de Mercurial para lanzar un proyecto en Hudson al enviar un conjunto de cambios (push).

Necesidad

Esta receta está hermanada con su equivalente en Subversion. En ella se explica cual es la necesidad y la ventaja, desde el punto de vista del TDD, de ejecutar las pruebas tras cada cambio (por pequeño que sea). No me repetiré aquí, ya que David lo explica suficientemente bien en su receta.

Configuración del repositorio

Como sabes, Mercurial es un SCV distribuido, así que no tenemos un “servidor principal” como ocurre en Subversion. Lo aquí explicado se podría configurar en cualquier repositorio Mercurial, pero lo ideal sería que aquel que recibe los cambios de todos los participantes en un proyecto sea el que ejecute el hook.

Otra cosa importante a tener en cuenta es que, a diferencia de Subversion, Mercurial no tiene soporte para propiedades. Esto hace que tengamos que pasarle la URI del proyecto de Hudson “hardcoded” en el script en lugar de buscarla en las propiedades del repositorio.

Supongamos que el hook (que veremos más adelante) está en el directorio .hg/hooks de nuestro repositorio y que ya tiene permisos de ejecución. Editamos el fichero .hg/hgrc añadiendo lo siguiente:

[hook]
changegroup.hudson = ./.hg/hooks/hook_pyhudson.py