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-commitAl 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.plHecho 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.
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???
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.
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.
@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.
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
@susana
Eso se hace en el shell de Linux, para darte permiso de ejecución al archivo. No dentro den archivo mismo.
Saludos.
y en caso de que use windows donde puedo hacerlo????, pues el repositorio lo tengo monatdo en windows server 2003, gracias y saludos
@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.
ya entonces buscare la documentacion que me hace falta, muchas gracias