¿Cómo puedo migrar un repositorio SVN a otro repositorio SVN?
¿Existe una forma sencilla de copiar un directorio de un repositorio a otro repositorio copiando todo el historial?
9 answers
La forma más sencilla es usar:
svnadmin dump path/to/repos > repos.out
Esto creará un formato portable para su repositorio (con historial) en el archivo repos.out
. A continuación, puede utilizar
svnadmin load path/to/newrepos < repos.out
Para cargar su repositorio' volcado ' al nuevo o existente.
Capítulo 5. Mantenimiento del Repositorio - > Migrar datos del Repositorio en otro lugar tiene esta nota sobre el uso de svnadmin dump
a partir de la versión 1.7:
El formato de volcado del repositorio Subversion describe el repositorio versionado solo cambios. Lo hará no llevar ninguna información sobre uncommitted transacciones, bloqueos de usuario en rutas del sistema de archivos, repositorio o servidor personalizaciones de configuración (incluidos los scripts de gancho), etc.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-18 21:20:09
Como se sugiere en el libro de Subversion :
svnadmin dump path/to/repos_src \
| svndumpfilter include path/inside/svn/to/directory \
| svnadmin load path/to/repos_dst
Con un ejemplo:
svnadmin dump /var/lib/svn/old_repo \
| svndumpfilter include trunk/my_project/common_dir \
| svnadmin load /var/lib/svn/new_repo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-18 21:18:27
Si no desea historial, puede usar svn export
para obtener una carpeta limpia sin las carpetas .svn
y luego svn import
en su otro repositorio.
Con el historial, tendría que usar el svnadmin dump
. Entonces usarías svndumpfilter
para filtrar solo las partes o rutas que desea usar antes de usar svnadmin load
.
Temas a leer:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-09 10:27:26
Utilice el svnsync
- Repositorio de Subversion Mirroring orden:
svnsync
es la herramienta de reflejo del repositorio remoto de Subversion. En pocas palabras, le permite reproducir las revisiones de un repositorio en otro.
La documentación de Subversion para el comando svnsync
tiene la siguiente advertencia (a partir de la versión 1.7) que implica que una vez que se usen otros comandos SVN para modificar un repositorio mirror, svnsync
no debería usarse con ese mirror en particular de nuevo:
svnsync
es muy sensible a los cambios realizados en el repositorio mirror eso no fue hecho como parte de una operación de espejo. Para evitar esto de suceder, es mejor si el procesosvnsync
es el único proceso se permite modificar el repositorio mirror.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-27 09:26:35
Puede crear un archivo de volcado usando svnadmin dump
, luego importarlo a un nuevo repositorio con svnadmin load
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-09 10:26:19
En la versión 1.7 de Subversion hay un nuevo comando, svnrdump
que se puede usar para acceder a un repositorio remoto y generar el mismo formato de salida de volcado que se genera con el comando svnadmin dump
. Esto le permite usar svnrdump
con svnadmin load
para transferir un repositorio de Subversion.
Ver svnrdump-Remote Subversion Repository Data Migration que tiene una explicación del nuevo comando.
En el Capítulo 5 del libro rojo, la sección Migrando los Datos del Repositorio en otro lugar tiene una subsección Migración de datos del repositorio utilizando svnrdump
que menciona:
La diferencia primaria[entre
svnrdump
ysvnadmin dump
] es que en lugar de requerir acceso directo al repositorio,svnrdump
opera de forma remota, utilizando el mismo Acceso al Repositorio (RA) protocolos que hace el cliente Subversion. Como tal, es posible que necesite proporcionar credenciales de autenticación. Además, sus interacciones remotas [sic] están sujetos a cualquier limitación de autorización configurada en el Servidor Subversion.
También asumiría que las limitaciones de svnadmin dump
con respecto a las personalizaciones de configuración del servidor, como los hooks no se pueden transferir, también se aplicarían a svnrdump
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-10 04:11:28
Creo que se debe decir que el archivo de volcado creado mediante la utilización de
svnadmin dump path/to/repos > dumpfile
Se puede crear (desde svn 1.7 y adelante) usando el comando
svnrdump dump url_to_repos > dumpfile
Esto es útil cuando se hace desde un equipo remoto y no desde el servidor.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-01 10:29:18
En caso de que esto ayude a otros, hay svn2svn para reproducir conjuntos de cambios de un repositorio Subversion a otro:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-04 17:23:09
Para migrar el repositorio de un servidor a otra versión, siga los pasos que debe seguir.
Paso 1: Descarga todas las versiones del repositorio en un archivo de volcado. Es posible que tenga miles de versiones en el repositorio existente. Por lo tanto, puede crear un archivo de volcado utilizando el siguiente script.
Dump.sh
# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
# your-unix-command-here
echo $i
svnadmin dump <old_server_repository_location > -r $i –incremental > <dump_location>/$i.dump
done
En el script anterior puede obtener un volcado completo del repositorio antiguo dependiendo de la disponibilidad de espacio, o puede tomar el volcado en un corto intervalo (es decir, de 0-5000, luego de 5001-10000 y así sucesivamente).
Paso 2: Ejecute el script anterior utilizando el siguiente comando. Dependiendo de la versión del kernel, necesita ejecutar cualquiera de las dos consultas siguientes.
$ bash dump.sh > stdout.sh
$ ./sh dump.sh > stdout.sh
Esto escribirá todos los comandos que tuvo que ejecutar usando el comando anterior en stdout.sh archivo. Puede rastrear este archivo para su referencia futura.
Paso 3: Compruebe si el firewall está abierto para el puerto número 22 entre el servidor antiguo y el nuevo. Si eso es no está abierto, luego pídale a su administrador que lo haga disponible.
Paso 4: Ahora copie todos los archivos de volcado generados desde el antiguo repositorio SVN al nuevo servidor usando el siguiente comando.
$ sftp xxxx@<new_server>
Connecting to <new_server>…
Password:
sftp> mput *.dump <new_server>/dump_location
En el comando anterior, xxxx
es el usuario que está haciendo la operación. En el proceso de hacer sftp está copiando los archivos de volcado del servidor antiguo al nuevo servidor.
Paso 5: Crear un nuevo repositorio para el nuevo Servidor
$ svnadmin create <new_repository>
Paso 6: Ahora use el siguiente script para cargar todo los archivos de volcado.
Load.sh
# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
# your-unix-command-here
echo $i
svnadmin load –bypass-prop-validation <new_repository> < dump_location /$i.dump
done
Simplemente siguiendo los seis sencillos pasos anteriores, podrá migrar su repositorio existente a un nuevo repositorio. A través de este proceso no necesita preocuparse por las revisiones dañadas de su repositorio existente.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-29 15:33:55