Migración de repositorios subversion
Esta receta explica cuales son las herramientas básicas de administración útiles para migración de repositorios
Introducción
El proceso de migración incluye básicamente 3 pasos:
- Volcado (dump) del repositorio original a un fichero. Puede incluir filtrado de revisiones
- Filtrado de contenidos, basado en rutas
- Carga en la nueva localización
En la receta vamos a suponer que queremos migrar el repo ficticio quake
de serverA a serverB.
Volcado
Se trata de almacenar todo el contenido del repositorio en un fichero estándar incluyendo toda la información sobre revisiones, comentarios, propiedades y todo tipo de metadatos utilizados por subversion.
Para hacer un volcado completo del repositorio:
serverA:/var/svn$ svnadmin dump quake > quake.dump
Este comando permite elegir una revisión o un conjunto de ellas:
serverA:/var/svn$ svnadmin dump quake --revision 1000:2000 > quake.dump
Filtrado
El tipo de filtrado que podemos hacer con las herramientas estándar es bastante limitado. Básicamente consiste en incluir o excluir rutas. Por ejemplo, si te quieres quedar sólo con el directorio src/engine
harías:
cat quake.dump | svndumpfilter include src/engine > quake_engine.dump
Y si quieres todo menos el arte pues:
cat quake.dump | svndumpfilter exclude src/art > quake_source.dump
Carga
En la máquina destino (serverB) utiliza de nuevo svnadmin
para cargar el fichero volcado; algo así:
serverB:/svn$ svnadmin create quake
serverB:/svn$ svnadmin load quake < quake.dump
Adaptar una copia local a la nuevo ubicación
Si tienes descargada una copia de un módulo del repositorio y te lo cambian, tienes un problema; sobre todo si tienes ficheros modificados o añadidos de los que no hiciste commit. Esta es una manera de solucionarlo.
$ svn co nueva_ubicación/modulo nuevo
$ cd viejo
~/viejo$ tar cvfz contenido.tgz * --exclude=".svn"
~/viejo$ cd ../nuevo
~/nuevo$ tar xvfz ../viejo/contenido.tgz