Tras mi primera migración de SVN, que acabó satisfactoriamente, decidí realizarme un pequeño manual donde recoger todos los pasos para una próxima migración que tendré que realizar dentro de poco.
En esta migración realicé bastantes cambios, por lo que considero que la guía está bastante completa:
- Cambio de versión de Apache de 2.0 a 2.2
- Cambio de versión de SVN de 1.4.5 a 1.6.6 (Esta migración se debió a que tenía problemas a realizar un merge)
- Modificación de las urls de los repositorios
Empecemos con la migración.
Tabla de contenidos
- 1 Pasos sacados de la web de Subversion
- 2 Descripción Paso 2
- 3 Descripción Paso 4
- 4 Descripción Paso 5
- 5 Descripción Paso 6
- 6 Descripción Paso 6a – Actualizar ruta de los módulos de SVN dentro de la configuración de Apache
- 7 Descripción Paso 6b – Actualizar la ruta de las entradas Location de Apache con las nuevas rutas de los repositorios y nueva ruta del fichero de autenticación de usuarios de SVN.
- 8 Paso Alternativo si es necesario
- 9 Verificación de que todo funciona desde eclipse.
- 10 También te puede interesar:
Pasos sacados de la web de Subversion
Esta guía se ha realizado siguiendo como base los pasos descritos en la web oficial de subversión. A estas indicaciones resaltar que algunos pasos no me ha hecho falta realizarlos por mi situación concreta. Pero por otro lado, si he añadido algún que otro paso que me ha sido necesario para completar mi migración.
Guía oficial: http://subversion.tigris.org/faq.html
- Shut down svnserve, Apache, and anything else that might be accessing the repository.
- svnadmin dump /path/to/repository > dumpfile.txt , using version X of svnadmin.
- mv /path/to/repository /path/to/saved-old-repository
- Now upgrade to Subversion Y (i.e., build and install Y, replacing X).
- svnadmin create /path/to/repository, using version Y of svnadmin.
- svnadmin load /path/to/repository < dumpfile.txt , again using version Y of svnadmin.
- Copy over hook scripts, etc, from the old repository to the new one.
- Restart svnserve, Apache, etc.
Descripción Paso 2
Fichero BATCH para crear Backup de cada uno de los repositorios
rem rem Para realizar backup de los repositorios es necesario que el servicio de apache esté parado. rem echo Iniciando backup de los repositorios de SVN... echo ----------------------------------------------- cd rem echo Generando Dump File del repositorio repos_uno... rem svnadmin dump c:Subidas_produccionRepositoriorepos_uno > dumpFile_repos_uno.txt rem echo Dump File del repositorio repos_uno generado correctamente. echo ----------------------------------------------- echo Backup de todos los repositorios completado. Pause
Descripción Paso 4
Crear backup de los ficheros de autenticación de usuarios (svn-auth-file).
Crear backup del fichero de instalación de SVN v1.4.5.
Desinstalar la versión actual de SVN (v1.4.5) e instalar la nueva versión (v1.6.6).
Los pasos a seguir para una instalación nueva vienen recogidos en este documento "Instalación de Subversion".
Hacer backup de los ficheros de configuración de Apache (httpd.conf)
Desinstalar Apache http Server 2.0.63 e instalar la nueva versión 2.2.14
En mi caso, tuve que reiniciar la máquina porque era incapaz de arrancar Apache.
Aunque había modificado el fichero https.conf con la nueva ruta Subversión, seguía detectando la anterior. Hasta que no reinicié, y volví a editar el fichero de configuración, no me di cuenta de que estaba modificando un fichero que no era.
Descripción Paso 5
Crear los repositorios en la nueva ubicación del sistema de ficheros.
Consultar documento de instalación para ver cómo crear los repositorios.
Descripción Paso 6
Realizar import de los dumpfiles de cada uno de los repositorios.
Fichero BATH de importación:
echo Realizando import de los repositorios SVN... echo ---------------------------------------------- svnadmin load c:RepositoriosSVNrepos_uno < C:Subidas_producciondumpFile_repos_uno.txt echo ---------------------------------------------- echo Imports realizados correctamente. pause
Descripción Paso 6a – Actualizar ruta de los módulos de SVN dentro de la configuración de Apache
Actualizar la configuración de Apache 2.2 del fichero httpd.conf. Si ya se tenía instalado Apache, hay que revisar la configuración de 2 módulos:
Ruta módulos anterior:
LoadModule dav_svn_module "C:/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Subversion/bin/mod_authz_svn.so"
Ruta módulos nueva:
LoadModule dav_svn_module "C:/Archivos de programa/Subversion1.6/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Archivos de programa/Subversion1.6/bin/mod_authz_svn.so"
Descripción Paso 6b – Actualizar la ruta de las entradas Location de Apache con las nuevas rutas de los repositorios y nueva ruta del fichero de autenticación de usuarios de SVN.
Si los repositorios han sido movidos de ubicación dentro del sistema de ficheros, deberemos modificar las entradas location del fichero httpd.conf de Apache.
Ejemplo de location anterior:
Hay que modificar lo señalado en naranja:
<Location /Subidas_produccion/Repositorio/repos_uno> DAV svn SVNPath C:/Subidas_produccion/Repositorio/repos_uno AuthType Basic AuthName "Subversion repository" AuthUserFile C:etcusuarios-svn.txt Require valid-user # AuthzSVNAccessFile c:/etc/svn-acl </Location>
Ejemplo del nuevo location:
<Location /RepositoriosSVN/repos_uno> DAV svn SVNPath C:/RepositoriosSVN/repos_uno AuthType Basic AuthName "Subversion repository" AuthUserFile C:RepositoriosSVNusuariosSVNusuarios-svn.txt Require valid-user # AuthzSVNAccessFile c:/etc/svn-acl </Location>
Paso Alternativo si es necesario
Si la url del repositorio cambia, luego en cada copia de trabajo hay que ejecutar:
$ svn switch --relocate url_antigua url_nueva
En mi caso, habría que realizar estas modificaciones aunque a mi no hizo falta con los pasos que hemos seguido pero lo dejo por si en un caso concreto fuera ncesario:
Ruta anterior: C:Subidas_produccionRepositorio...
Ruta nueva: C:RepositoriosSVN...
URL anterior: http://localhost/Subidas_produccion/Repositorio/...
URL Nuevo: http://localhost/RepositoriosSVN/...
Verificación de que todo funciona desde eclipse.
Crear las nuevas entradas de las urls de nuestros proyectos en Eclipse en la vista SVN repositories.
Desde aquí ya se puede comprobar si los ficheros mantienen el histórico de todos los commit y operaciones que se hayan realizado pulsando el botón derecho del ratón sobre éste y seleccionando Show History.
Hacer checkout de los proyectos desde las nuevas urls del SVN.
Y eso es todo.
Que tengan mucha suerte con sus migraciones 😉