Como llevar el dump de un repositorio SVN a Git

He vuelto a escribir, luego de varios años :D

Hace varios meses recibí el dump de un repositorio (de varios años) que fue llevado por una empresa y el cliente nos lo entrega a nosotros y siendo yo un ávido usuario de Git, decidí ponerme manos a la obra y hacer esta migración y lo logré, así que les indico cuales fueron las líneas de comando que usé.

Esto fue realizada en Windows 10 y 8 (si, tuve que hacerla mas de una vez) pero los comandos que usé pueden ser usados en cualquier SO.

Recuperar el Dump

Debido a que sólo se tiene un volcado del repositorio es necesario instalar SVN, en mi caso lo hice con el típico TortoiseSVN, sólo que en las opciones elegí instalar los binarios para la lista de comandos:

Marcar para instalar todos los componentes
Una vez instalado traté de usar los comandos en la terminal de Windows, sin embargo no funcionó a pesar de que el instalador creó la variable de ambiente, logré usarlos luego de recrear la variable.

Ahora nos toca crear el repositorio:

svnadmin create /ubicacion/de/repositorio

Con esto damos inicio a un repositorio limpio con lo que debes importar el volcado que nos dieron con el siguiente comando:

svnadmin load /ubicacion/de/repositorio < /ubicacion/de/dump.foo

Dado que en mi caso el repositorio era de varios años (el número de revisión estaba sobre 9600) esta importación tardó horas… Una vez terminó fue necesario iniciar el servidor svn para poder acceder desde localhost de forma sencilla y que mas sencillo que con:

svnserve -d

Y que por defecto funciona en el puerto 3690.

Mudando a Git

Desde acá probablemente muchos estarán diciendo que use sn2git, un envoltorio (wrapper) hecho en ruby que ofrece opciones sencillas para no usar el comando ‘git svn’, pero que por alguna u otra configuración no me funcionó perfectamente, por lo que tuve que usar git directamente.

git svn clone svn://localhost/repositorio --preserve-empty-dirs

Finalmente ya posees toda la historia del SVN en un repositorio Git, ahora puedes subirlo a tu host de elección.