Martes, Julio 10, 2007

Snapshots automáticos de SVN

Los repositorios de subversion tienen, además de una base de datos con toda la información, un directorio especial por repositorio llamado hooks donde podemos escribir scripts que se ejecutarán en diferentes situaciones. Estos scripts (bueno, o programas) pueden desde abortar un commit, a cambiar cosas, añadir información, cambiar propiedades, etc… En nuestro caso vamos a usar el hook de post-commit para generar un snapshot automático con cada nuevo tag.

Vamos a suponer que tenemos un repositorio con múltiples proyectos, cada uno de ellos con sus correspondientes ‘trunk’, ‘tags’, ‘branches’ como dice el libro de subversion. De algunos de ellos queremos hacer snapshots cuando se marque un nuevo tag, así que pondremos en el directorio hooks el siguiente script llamado post-commit ( se tiene que llamar así y además tiene que ser ejecutable, chmod +x):


#!/bin/bash
export PATH=/usr/bin:/bin
REPOS="$1"
REV="$2"
PREFIXES="/proyecto1 /proyecto2 /proyectoN"
OUTPUT_DIR=/path/donde/se/guardara/el/zip
for PREFIX in $PREFIXES; do
for tag in $(\
svn log -v -r $REV file://$REPOS | \\
awk '/^ *A */{if ($2~/'${PREFIX//\\//\\\\/}'\\/tags\\/[^\\/]*$/) print $2;}/^$/{exit}'\\
); do
file=${tag##*/}
svn -r $REV export file://$REPOS/$tag $file
zip -rm $OUTPUT_DIR/$file.zip $file
done
done

(bajar) versión completa

Si tu repositorio sólo tiene un proyecto, se puede simplificar un poco más:


#!/bin/bash
export PATH=/usr/bin:/bin
REPOS="$1"
REV="$2"
OUTPUT_DIR=/path/donde/se/guardara/el/zip
for tag in $(\
svn log -v -r $REV file://$REPOS | \\
awk '/^ *A */{if ($2~/\\/tags\\/[^\\/]*$/) print $2;}/^$/{exit}'\\
); do
file=${tag##*/}
svn -r $REV export file://$REPOS/$tag $file
zip -rm $OUTPUT_DIR/$file.zip $file
done

(bajar) versión simplificada

posteado por PpluX @ 4:44 pm tags:recetas, subversion  

1 Comentario »

  1. [...] en distintas situaciones. Como si fuera un trigger. De hecho, el artículo donde lo he visto, Snapshots automáticos de SVN, describe cómo hacer un post-commit en el repositorio. No, si al final me va a gustar el [...]

    Pingback por Creando triggers en subversion — Enero 24, 2008 @ 2:23 pm

Suscripción RSS a los comentarios de la entrada. URI para TrackBack.

Deja un comentario

Gestionado con WordPress