Como usar svnsync para sincronizar dos repositorios Subversion

Código fuenteEl objetivo es crear un “mirror” local de un repositorio Subversion remoto.

El repositorio original, del que queremos hacer la réplica, es svnsource y está ubicado en la URL remota http://server1.ejemplo.com/svn/svnsource.

El nuevo repositorio que queremos que sea una réplica de svnsource lo vamos a denominar svntarget y estará ubicado en el servidor sobre el que estamos trabajando en el directorio /srv/svn/svntarget.

Paso 1. Creación del repositorio svntarget.

El repositorio destino no puede existir previamente (si existe debemos borrarlo) así que el primer paso es crear un nuevo repositorio vacío.

sqcman@sqclab:~$ svnadmin create --fs-type fsfs /srv/svn/svntarget

Paso 2. Ajustar los permisos del repositorio svntarget.

El programa svnsync debe poder modificar todas las propiedades del repositorio destino. Para ello deberemos crear un hook previo a modificaciones en las propiedades del repositorio (pre-revprop-change) que no ponga ninguna limitación.

sqcman@sqclab:~$ echo '#!/bin/sh' > /srv/svn/ecs/hooks/pre-revprop-change
sqcman@sqclab:~$ chmod 755 /srv/svn/ecs/hooks/pre-revprop-change

Paso 3. Inicializar el repositorio svntarget.

El siguiente paso es utilizar el programa svnsync para inicializar el repositorio destino, svntarget, indicando desde qué repositorio remoto se debe replicar (en nuestro ejemplo http://server1.ejemplo.com/svn/svnsource).

sqcman@sqclab:~$ svnsync init file:///srv/svn/svntarget http://server1.ejemplo.com/svn/svnsource
Copied properties for revision 0.

Cuando ejecutemos este comando nos solicitará, si no tenemos las credenciales ya cacheadas, el usuario y contraseña con el que conectarnos al repositorio remoto.

Paso 4. Ejecutar la primera sincronización.

Ya lo tenemos todo listo para ejecutar por primera vez el proceso de sincronización. Para ello utilizamos de nuevo el programa svnsync con el subcomando sync indicándole el repositorio destino (en nuestro ejemplo file:///srv/svn/svntarget).

sqcman@sqclab:~$ svnsync --non-interactive sync file:///srv/svn/svntarget

Después de la ejecución de este comando dispondremos en local de una copia completa del repositorio origen.

Paso 5. Automatizar la sincronización.

Para asegurar que el repositorio destino se mantenga sincronizado con el repositorio origen es necesario que ejecutemos el proceso de sincronización de forma periódica. Hay distintas alternativas, la más inmediata sería introducir un post-commit en el repositorio origen que dispare el proceso de sincronización en el servidor destino. La otra sería ejecutar periódicamente de forma automática el proceso de sincronización en el servidor destino. Este segundo acercamiento es el que vamos a configurar en este ejemplo utilizando una tarea cron.

Debemos analizar y ajustar convenientemente los permisos del repositorio Subversion destino para asegurarnos de que el usuario que va a ejecutar el proceso de sincronización tenga todos los permisos necesarios sobre el repositorio Subversion destino. En mi caso es el usuario www-data quien va a ejecutar el cron para sincronizar el repositorio.

sqcman@sqclab:~$ sudo chmod -R www-data:www-data /srv/svn/svntarget
sqcman@sqclab:~$ sudo crontab -u www-data -l
...
...
# m h  dom mon dow   command
*/5 * * * * /usr/bin/svnsync --non-interactive sync file:///srv/svn/ecs

Por último podemos hacer un seguimiento y control de la ejecución del cron revisando los logs del sistema.

sqcman@sqclab:~$ grep svnsync /var/log/syslog
Nov 15 11:40:01 sqclab CRON[5920]: (www-data) CMD (/usr/bin/svnsync --non-interactive sync file:///srv/svn/svntarget)

Referencias

Gnome Do’s Docky

Uno de  los motivos por el que tenía tanto interes en recuperar los efectos de escritorio es poder volver a disfrutar de la estupenda última versión de Gnome Do con el nuevo interface Docky.

En esta página se describe su instalación en Ubuntu y os  lo recomiendo. Gnome Do es un gran desconocido (al menos en mi caso) y día a día descubro nuevas posibilidades que me permiten hacer casi cualquier cosa con mi Ubuntu sin despegar mis manos del teclado y con apenas 3 o 4 pulsaciones.

Instalando VMware Server 1.0.8 y VMware MUI 1.0.8 en Ubuntu 8.0.4 Server

Ando estos días instalando nuestro cuarto servidor dedicado a la virtualización de entornos.

En este caso me he decantado por Ubuntu 8.0.4 Server y VMware Server 1.0.8 (he probado la 2.0.0 y no me convence todavía, sobre todo porque los otros tres servidores siguen en la 1.0 de VMware).

La instalación del VMware Server sobre Ubuntu no ha tenido absolutamente ningún problema, pero la instalación del interfase web (VMware-MUI 1.0.8) me ha dado algunos quebraderos de cabeza que he resuelto con la información contenida en esta página.

El problema era que al ejecutar la instalación del VMware-MUI se quejaba diciendo que el VMware Server no estaba instalado

VMware Server must be installed on this machine for the VMware Management Interface to work

Básicamente la resolución del problema ha pasado por instalar una librería que faltaba:

jtome@aquiles:~$ sudo aptitude install libxi6

Con esto he podido finalizar la instalación del VMware-MUI sin problemas. Pero me encontré que el script de arranque del interfase web no funcionaba. En la misma página venía la solución, parchear el script.

jtome@aquiles:~$ cd /tmp
jtome@aquiles:/tmp$ wget http://users.piuha.net/martti/comp/ubuntu/en/httpd.vmware.diff
jtome@aquiles:/tmp$ cd /
jtome@aquiles:/$ sudo patch -b -p0 < /tmp/httpd.vmware.diff