Si desea mover el repositorio y mantener el historial, probablemente necesitará acceso al sistema de archivos en ambos hosts. La solución más simple, si su backend es FSFS (el predeterminado en las versiones recientes), es hacer una copia del sistema de archivos de toda la carpeta del repositorio.
Si tiene un backend Berkley DB, si no está seguro de cuál es su backend o si está cambiando los números de versión de SVN, querrá usar svnadmin para volcar su antiguo repositorio y cargarlo en su nuevo repositorio. El uso svnadmin dump
le dará una copia de seguridad de un solo archivo que puede copiar al nuevo sistema. Luego, puede crear el nuevo repositorio (vacío) y usarlo svnadmin load
, que esencialmente reproducirá todas las confirmaciones junto con sus metadatos (autor, marca de tiempo, etc.).
Puede leer más sobre el proceso de volcado / carga aquí:
http://svnbook.red-bean.com/en/1.8/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate
Además, si lo hace svnadmin load
, asegúrese de usar la --force-uuid
opción, o de lo contrario la gente tendrá problemas para cambiar al nuevo repositorio. Subversion usa un UUID para identificar el repositorio internamente, y no le permitirá cambiar una copia de trabajo a un repositorio diferente.
Si no tiene acceso al sistema de archivos, puede haber otras opciones de terceros (o puede escribir algo) para ayudarlo a migrar: esencialmente, tendría que usar el registro svn para reproducir cada revisión en el nuevo repositorio, y luego arregle los metadatos después. Necesitará los scripts de gancho pre-revprop-change y post-revprop-change en su lugar para hacer esto, que asume el acceso al sistema de archivos, entonces YMMV. O, si no desea conservar el historial, puede usar su copia de trabajo para importar al nuevo repositorio. Pero es de esperar que este no sea el caso.
svnrdump dump https//remote/svn/trunk > repos.dump
. En la mayoría de los casos, el comando también funciona con SVN 1.6, pero puede tener algunos problemas, consulte la documentación. Funciona tanto en * nix como en Windows.rsvndump
funcionó muy bien para mí migrar un repositorio de svnrepository.com a un servidor Ubuntu que controlo.Cómo instalar y usar rsvndump en Ubuntu:
Instalar las dependencias que faltan (bibliotecas "APR" y Subversion)
Instalar rsvndump
Volcar el repositorio SVN remoto a un archivo local
Cree un nuevo repositorio y cárguelo en el archivo de volcado local
fuente
svn switch --relocate http://my.svnrepository.com/svn/old_repo http://newserver.com/svn/my_new_repo
También puede utilizar svnsync. Esto solo requiere acceso de solo lectura en el repositorio de origen
más en svnbook
fuente
Extracto de mi Blog-Note-to-me :
Ahora puede importar un archivo de volcado, por ejemplo, si está migrando entre máquinas / versiones de subversión. por ejemplo, si hubiera creado un archivo de volcado desde el repositorio de origen y lo hubiera cargado en el nuevo repositorio como se muestra a continuación.
Comandos para sistemas similares a Unix (desde la terminal):
Comandos para sistemas Microsoft Windows (desde cmd shell):
fuente
La herramienta para hacer eso sería
Pero para que esto funcione, necesita acceso al sistema de archivos al repositorio. Y una vez que tenga eso (y siempre que el repositorio esté en formato FSFS), puede simplemente copiar el repositorio en su nueva ubicación (si está en formato BDB, se recomienda encarecidamente descargar / cargar).
Si no tiene acceso al sistema de archivos, tendrá que pedirle al proveedor del repositorio que le proporcione el volcado (y hacer que elimine su repositorio, y esperar que cumpla)
fuente
Si no tiene acceso a los archivos del repositorio, prefiero rsvndump (volcado del repositorio remoto de Subversion) para hacer el archivo de volcado.
fuente
Básicamente, hay muchas formas de realizar la tarea. El tema se trata en profundidad en SVNBook | Migración de datos del repositorio a otra parte , por lo que sugiero leer la sección del libro.
Aquí hay una breve descripción de sus opciones:
Depende de su entorno, pero existe una gran posibilidad de que simplemente pueda copiar el repositorio al nuevo servidor y funcione. Debe revisar los scripts de enlace del repositorio después de copiar el repositorio para asegurarse de que funcionan como espera.
Puede usar los comandos
svnadmin dump
ysvnadmin load
para, ehm, generar un volcado completo y luego cargarlo en otro repositorio en otro servidor. Necesitarásvnadmin create
un nuevo repositorio limpio para cargar el volcado en él. Tenga en cuenta que el enfoque solo se ocupa del historial del repositorio y no mueve los scripts de enlace ni los archivos de configuración del repositorio . Además, debe tener acceso de lectura del sistema de archivos al repositorio original para volcarlo.Desde Subversion 1.7, la
svnrdump
herramienta está disponible. En general, imitasvnadmin dump
ysvnadmin load
funciona, pero funciona de forma remota. No es necesario que tenga acceso al sistema de archivos de lectura / escritura a los repositorios originales y de destino, ya que la herramienta funciona de forma remota como el cliente de Subversion, por ejemplo, a través del protocolo HTTPS. Por lo tanto, debe tener acceso de lectura al repositorio original y leer / escribir en el de destino.Otra opción es usar el
svnadmin hotcopy
comando. El comando se usa principalmente para fines de respaldo, crea una copia completa del repositorio, incluida la configuración y los scripts de enlace. Luego, puede mover el repositorio copiado en caliente a otro servidor.fuente
También puede usar el
svnadmin hotcopy
comando:Se necesita una copia de seguridad completa del repositorio, incluidos todos los enlaces, archivos de configuración, etc.
Más en SVN Book
fuente
Suponiendo que tiene los privilegios necesarios para ejecutar svnadmin, debe utilizar los comandos dump y load .
fuente
Encontré un artículo sobre cómo mover repositorios svn de un servicio de alojamiento a otro, y cómo hacer copias de seguridad locales:
Defina dónde almacenará sus repositorios:
svnadmin create $MYREPO
Crea un archivo de gancho y hazlo ejecutable:
Ahora podemos comenzar a importar el repositorio con
svnsync
, que inicializará un repositorio de destino para la sincronización desde otro repositorio:Y el broche de oro para transferir todas las revisiones pendientes al destino desde la fuente con la que se inicializó:
Allí ahora tiene un repositorio svn local en el
~/repo
directorio.Fuente:
fuente
Puede encontrar ayuda sobre la migración de repositorios SVN en el Capítulo 5. Administración del repositorio, Migración de un repositorio .
Este enfoque requiere acceso a svnadmin.
fuente