Migrar los repositorios svn a otro servidor

Ya sé que lo que más mola ahora es Git, pero de momento en Dabne seguimos manteniendo nuestros repositorios de código en Subversion, mientras vamos trasteando con Git y valorando si cambiar del todo o seguir con un híbrido de svn + git.

El caso es que esta semana he tenido que mover los repos a un nuevo servidor y así es cómo lo he hecho.

En el servidor donde están los repos hay que hacer un 'dump' de cada uno de ellos, copiarlos al servidor 2, y cargarlos en un repo nuevo recién creadito.

Sería así:

serv1$ svnadmin dump nombre_repo > nombre_repo.dump

Se copian los ficheros .dump al servidor 2 y se hace:

serv2$ svnadmin create nombre_repo
serv2$ svnadmin load nombre_repo < nombre_repo.dump

Como tenía varios he probado a hacerlo con un scriptcillo en ruby directamente desde la línea de comandos:

serv1$ ruby -e "Dir.foreach('.'){|x| system \"svnadmin dump #{x} > #{x}.dump\"}"

serv2$ ruby -e "Dir.glob('*.dump'){|x| system \"svnadmin create #{x.split('.')[0]} \"}"
serv2$ ruby -e "Dir.glob('*.dump'){|x| system \"svnadmin load #{x.split('.')[0]} < #{x} \"}"

Si la url del repositorio cambia luego en cada copia de trabajo hay que ejecutar:

$ svn switch —relocate url_antigua url_nueva

Cuidado con lo que va delante de relocate que son dos -, no uno de esos largos.

Esta vez he configurado el acceso a los repositorios con apache2 por https, pero eso queda para otro post.