Como mover un repositorio Subversion

...

El siguiente tip permite mover un repositorio Subversion de un servidor a otro.

Nota: los comandos detallados en esta guía, salvo aclaración en contrario, se asumen ejecutados con la identidad de root.

Pasos iniciales

Repositorio de destino

Antes de comenzar con el procedimiento de migración se debe tener instalado el servidor Subversion donde estará alojado el repositorio destino.

Con el servidor instalado se deberá crear y configurar el repositorio destino.

Deshabilitar acceso al servidor Subversion de origen

Luego de contar con el repositorio de destino creado y configurado, se debe deshabilitar el acceso al repositorio de origen. De esta forma se evitará que los desarrolladores sigan incorporando cambios al repositorio durante el proceso de migración.

Determinar el número de revisión actual y los últimos archivos modificados

Antes de exportar el repositorio conviene conocer cual es el último número de revisión y los últimos archivos modificados.

Con esta informción se podrá validar que finalizado el proceso ambos repositorios poseen la mismo información.

Pasos para mover el repositorio

Exportar el repositorio origen

Ejecutar el comando svnadmin dump para generar un archivo de volcado, en el mismo se almacenará la información de todas las revisiones del repositorio, por ejemplo:

# svnadmin dump /var/svn/repo001 > repo_001.svn_dump

Nota: el archivo resultante (ej: repo_001.svn_dump) se debe mover al servdor en el cual se encuentra el repositorio destino.

Importar el archivo de volcado en el repositorio destino

Para importar el repositorio se debe ejecutar el comando svnadmin load especificando el repositorio destino y el archivo de volcado, por ejemplo:

# svnadmin load --force-uuid /var/svn/repo001 < /tmp/svn_wds.svn_dump

Nota: el modificador --force-uuid permite que el repositorio destino mantenga los identificadores que se encontraban en el respositorio origen, de esta manera, los clientes no notarán la migración de los repositorios.

Al finalizar el proceso se debe verificar la importación de la última revisión:

------- Committed revision 6572 >>>

<<< Started new transaction, based on original revision 6573
* editing path : branches/branches/branch_xx/PROYECTO.... done.
* editing path : branches/branches/branch_xx/PROYECTO.... done.

------- Committed revision 6573 >>>

<<< Started new transaction, based on original revision 6574
* editing path : branches/branches/branch_xx/PROYECTO.... done.
* editing path : branches/branches/branch_xx/PROYECTO.... done.

------- Committed revision 6574 >>>

Ultimos pasos

Habilitar el acceso al respositorio destino

Una vez migrado el repositorio se debe habilitar el acceso al repositorio origen.

Si el servidor se accede mediante HTTP(S) es importante mantener las URL's del repositorio para evitar inconvenientes en los clientes.

Impacto en los clientes

Si luego de la migración la URL de acceso al repositorio no es la misma, ya sea por que hubo un cambio de host, de puerto, o del path de acceso, los clientes que hayan hecho un check-out deberán ejecutar el comando svn switch --relocate.

svn switch --relocate http://host_origen/svn/repo001 http://host_destino:81/svn/repo001 C:/_workspaces/PROYECTO

Si estamos trabajando en eclipse tendremos que utilizar la opción Relocate... desde la perspectiva SVN Repositories Explorer.

Eclipse - svn - Relocate

Referencias


Modificado por última vez en Lunes, 09 Septiembre 2013 04:14

Acerca del autor

Diego E. Mendoza

Diego se desempeña como arquitecto de software en MicroGestion participando en el proceso de análisis y diseño de soluciones que tengan requerimientos de alta disponibilidad, integración de ambientes heterogéneos, orientación a servicios, gestión de procesos de negocio, etc.