Ubicación: Inicio > Tecnologías > Subversion > Que son y como se utilizan los hooks

Que son y como se utilizan los Hooks

Introducción

Un Hook o gancho es un programa activado por algún evento del repositorio, como la creación de una nueva revisión o la modificación de una propiedad no versionada. A cada gancho se le da suficiente información para que sepa de qué evento se trata, cuál es su objetivo, y el nombre de usuario de la persona que disparó el evento. Dependiendo de la salida del gancho o de estado de su salida, el programa de enganche puede continuar la acción, pararla, o suspenderla de alguna manera.

Tipos de ganchos

Son 5 los principales ganchos implementados por el repositorio Subversion:

  • start-commit: Se ejecuta antes de la transacción de envío haya sido creada. Se usa normalmente para decidir si el usuario tiene los privilegios suficientes. El repositorio pasa dos argumentos a este programa: la ruta al repositorio, y el nombre de usuario que intenta realizar el envío. Si el programa devuelve algún valor distinto de cero, se paraliza el envío antes de haber creado la transacción.
  • pre-commit: Se ejecuta cuando se completa la transacción, pero antes de ser enviados los datos al repositorio. Este gancho se usa normalmente como protección contra envíos que no se permiten debido a contenido o ubicación ( por ejemplo, su sitio puede requerir que todos los cambios sobre una rama determinada incluyan un número de ticket del seguimiento de fallos, o que el mensaje de informe de cambios entrante no esté vacío). El repositorio pasa dos argumentos a este programa: la ruta al repositorio, y el nombre de la transacción que va a sufrir el cambio. Si el programa devuelve una salida que no sea cero, el envío se aborta y la transacción se borra.
  • post-commit: Esto se ejecuta después de que la transacción se haya confirmado, y una nueva revisión haya sido creada. La mayoría de la gente usa este gancho para enviar correos descriptivos acerca de la confirmación o para hacer una copia de seguridad del repositorio. El repositorio pasa dos argumentos a este programa: la ruta al repositorio, y el número de la nueva revisión creada. El código de salida del programa es ignorado.
  • pre-revprop-change: Al no ser versionadas las propiedades de revisión de Subversion, hacer modificaciones a una de ellas ( como por ejemplo, el mensaje de informe de cambios svn:log ) sobreescribirá el valor previo de esa propiedad para siempre. Como hay datos aquí que potencialmente se pueden perder, Subversion provee este gancho ( y su contrapartida, post-revprop-change) de tal manera que los administradores de repositorios puedan mantener con métodos externos si así lo desean, registros de los cambios de dichas propiedades. Como precaución contra la pérdida de datos de propiedades no versionadas, no se permite a los clientes Subversion modificarlos del todo remotamente a no ser que este gancho se implemente para su repositorio.
  • post-revprop-change: Como se ha mencionado antes, este gancho es la contrapartida del gancho pre-revprop-change. De hecho, por paranoia, este script no se ejecutará a no ser que el gancho pre-revprop-change exista. Cuando ambos están presentes, el gancho post-revprop-change se ejecuta justo después de que una propiedad de revisión haya sido modificad, y se usa típicamente para enviar un correo electrónico con el nuevo valor de la propiedad cambiada. El repositorio pasa cuatro argumentos al gancho: la ruta al repositorio, la revisión en la cual la propiedad existe, el nombre autenticado de usuario de la persona que va a hacer el cambio y el nombre mismo de la propiedad.

Otro tipo de ganchos (aunque menos utilizados): post-unlock, pre-unlock, post-lock, pre-lock.

Poner en marcha un gancho

Los ganchos se encuentran en el siguiente directorio:

/home/USUARIO/svn/mirepo/hooks

Para que un gancho comience a funcionar, debemos renombrar el nombre del fichero eliminandole su extensión.

Por ejemplo: post-commit.tmpl lo convertimos en post-commit (a secas).

Personalizar nuestro gancho

Para personalizar nuestro gancho, tenemos que editar cualquiera de los que tenemos dentro de la carpeta Hooks. Al final del fichero deberá aparecer una llamada a un script (programa) que será lo que se ejecute una vez que nuestro gancho se haya activado.

En este enlace tenemos un buen número de scripts que nos pueden valer para que se ejecuten con nuestros Hooks. http://subversion.tigris.org/tools_contrib.html#hook_scripts

Dar permisos de ejecución a los ficheros

Puede ser que tanto nuestro fichero Hook como los scripts que se ejecuten dentro de nuestro gancho, no tengan los permisos de ejecución necesarios. Esto lo haremos de la siguiente manera:

chmod +x FICHERO

Probar nuestro gancho

Antes ver si nuestro gancho se ejecuta correctamente, podemos realizar una prueba activandolo nosotros mismos desde la consola. Para ello, vamos al directorio Hooks:

cd /home/USUARIO/svn/mirepo/hooks

Y ejecutamos el gancho (en este caso el post-commit):

env - ./post-commit /home/USUARIO/svn/mirepo

que-son-y-como-se-utilizan-los-hooks.txt · Última modificación: 2007/11/20 16:45 por gorka

Inicio · Hosting · Dominios · Aplicaciones · Distribuidores · Wiki · Blog · Contacto · Mapa

© Ekostat Informatica, S.L.  -  Aviso legal  -  ( XHTML eta CSS zuzena )