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 repositorio.
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.