Notificaciones por correo desde Subversion

El escenario es el siguiente. Varios desarrolladores, con una carga importante de trabajo, y alguien que tiene que intentar controlar el código que se commitea al respositorio.

Sumémosle a ese alguien, la tarea de desarrollar y tener sus propias actividades.

Bajo ese escenario, se hace casi imposible llevar un control de las modificaciones que se realizan al código.

Para quienes nos identificamos con ese alguien, y que, además, usamos Subversion, existe una funcionalidad que podemos explotar desde el repositorio, para evitar perderle los pasos a la situación.

Vamos a configurar un poquito el repositorio para que, luego de cada commit, nos envíe un correo informándonos de lo sucedido.

Para eso, empezemos por ingresar a la carpeta hooks del repositorio.

cd /path/a/mi/repositorio/hooks

Si miramos el contenido del directorio vamos a encontrarnos con una serie de archivos, de extensión tmpl, que funcionan como plantillas para los distintos eventos que vamos a poder manejar.

Estos son los archivos que vamos a encontrar:

post-commit.tmpl
post-lock.tmpl
post-revprop-change.tmpl
post-unlock.tmpl
pre-commit.tmpl
pre-lock.tmpl
pre-revprop-change.tmpl
pre-unlock.tmpl
start-commit.tmpl

El archivo que nos va a interesar, es post-commit.tmpl. Para ponerlo en funcionamiento, vamos a crear una copia y le damos permiso de ejecución.

cp post-commit.tmpl post-commit
chmod +x post-commit

Veamos entonces qué contiene ese archivo (en ésta parte es como los viejos libros de “Elije tu propia aventura”, cada uno con su editor, yo voy a ir por VI).

vi post-commit

Al abrirlo, vamos a ver:

#!/bin/sh
 
...
Un montón de comentarios que no estaría mal leer
...
 
REPOS="$1"
REV="$2"
 
/usr/share/subversion/hook-scripts/commit-email.pl "$REPOS" "$REV" commit-watchers@example.org

Lo que hace éste archivo, es recibir dos parámetros. El primero es la ubicación física del repositorio y el segundo el número de revisión.

Esos parámetros son enviados a un segundo archivo, commit-email.pl, que además, como tercer parámetro, toma la dirección de correo del destinatario.

Un pequeño detalle sobre la línea final, es que puede que sólo aparezca el archivo commit-email.pl sin el path absoluto. Es más, podríamos no tener el archivo.

Si necestiamos obtenerlo, podemos descargarlo dese la página de herramientas de Subversion.

En mi caso, el archivo está en el lugar indicado, así que simplemente lo voy a copiar dentro de la carpeta hooks del repositorio.

cp /usr/share/subversion/hook-scripts/commit-email.pl /path/a/mi/repositorio/hooks

De la misma forma que hicimos con el archivo post-commit, le vamos a dar permiso de ejecución a commit-email.pl.

chmod +x commit-email.pl

Hecho esto, vamos a darle el toque final al script post-commit. La versión para el ejemplo quedaría de la siguiente forma.

#!/bin/sh
 
REPOS="$1"
REV="$2"
 
commit-email.pl "$REPOS" "$REV" usuario@dominio.com.ar

Grabamos y hacemos la primera prueba, ejecutando nuestro primer commit desde el cambio.

Van a recibir un correo con el número de revisión en el asunto y los archivos modificados (no todos si la lista es muy grande).

En el cuerpo del mensaje, van a tener toda la información detallada del commit, incluyendo los bloques de código que se cambiaron.

Ahora si, a commitear en paz.

A lo mejor te interese leer

9 thoughts on “Notificaciones por correo desde Subversion

  1. Muy buen tutorial… una pregunta, en mi archivo post-commit sale así:

    REPOS=”$1″
    REV=”$2″

    commit-email.pl “$REPOS” “$REV” commit-watchers@example.org
    log-commit.py –repository “$REPOS” –revision “$REV”

    ya bajé el commit-email.pl y lo leí pero el log-commit.py no lo consigo por ningún lado. Donde lo encuentro y que hace???

  2. Para serte sincero, no se qué hace ese archivo, y en la página de descarga de tools no está.
    Si sólo querés la notificación por correo, comentá o eliminá la línea de log-commit.py

    Y nada más.

  3. Hola esta muy bueno su tutorial pero no entiendo una cosa, en que parte es que se le da permiso al post-commit, es decir donde debe escribirse esa sintaxis para dar ese permiso, espero que me puedan ayudar.

  4. @susana

    Ese archivo lo vas a encontrar dentro de tu repositorio. Lo encontrás dentro de /path/a/mi/repositorio/hooks (/path/a/mi/repositorio es donde se encuentreel tuyo).
    Saludos.

  5. si yo encontre el fichero pero mi duda es si esta sintaxis chmod +x post-commit y esta chmod +x commit-email.pl se escribe dentro de cada fichero respectivamente, debajo de los comentarios o al principio?
    saludos

  6. @susana

    Eso se hace en el shell de Linux, para darte permiso de ejecución al archivo. No dentro den archivo mismo.
    Saludos.

  7. y en caso de que use windows donde puedo hacerlo????, pues el repositorio lo tengo monatdo en windows server 2003, gracias y saludos

  8. @susana

    Si utilizás Windows tenés la interfase gráfica para dar permisos (o la línea de comandos, pero tendrás que buscar la documentación porque no los recuerdo de memoria).
    Saludos.

  9. ya entonces buscare la documentacion que me hace falta, muchas gracias