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

Referencias