usar tutorial tortoise repositorio español create configurar como clonar svn svnadmin svndump svndumpfilter

tutorial - ¿Cómo migro un repositorio SVN a otro repositorio SVN?



svn tutorial español (9)

¿Existe una manera simple de copiar un directorio de un repositorio a otro repositorio con la copia de todo el historial?


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


Creo que debería decirse que el archivo de volcado creado al utilizar

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 una computadora remota y no desde el servidor.


En Subversion versión 1.7 hay un nuevo comando, svnrdump , que se puede usar para acceder a un repositorio remoto y generar el mismo resultado de formato de volcado generado por el comando svnadmin dump . Esto le permite usar svnrdump con svnadmin load para transferir un repositorio de Subversion.

Consulte 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 Migración de datos del repositorio en otro lugar tiene una subsección Migración de datos del repositorio usando svnrdump que menciona:

La principal diferencia [entre svnrdump y svnadmin dump ] es que, en lugar de requerir acceso directo al repositorio, svnrdump funciona de forma remota, utilizando los mismos protocolos de acceso al repositorio (RA) que el cliente de Subversion. Como tal, es posible que deba proporcionar credenciales de autenticación. Además, sus interacciones remotas [sic] están sujetas a cualquier limitación de autorización configurada en el servidor de Subversion.

También supondría que las limitaciones de svnadmin dump relación con las personalizaciones de configuración del servidor, como los hooks, no se pueden transferir también se aplicarán a svnrdump .



La forma más simple es usar:

svnadmin dump path/to/repos > repos.out

Esto creará un formato portátil para su repositorio (con historial) en el archivo repos.out . Puedes usar

svnadmin load path/to/newrepos < repos.out

para cargar su repositorio "volcado" a uno nuevo o existente.

Capítulo 5. Mantenimiento de repositorio -> Migración de datos de repositorio En otro lugar tiene esta nota sobre el uso de svnadmin dump partir de la versión 1.7:

El formato de volcado del depósito de Subversion solo describe los cambios del repositorio versionado. No incluirá ninguna información sobre transacciones no confirmadas, bloqueos de usuario en las rutas del sistema de archivos, personalizaciones de configuración del servidor o repositorio (incluidas las secuencias de comandos de gancho), etc.


Para migrar el repositorio de un servidor a otra versión, a continuación se detallan los pasos que debe seguir.

Paso 1: volcar todas las versiones del repositorio en un archivo de volcado. Es posible que tenga miles de versiones en el repositorio existente. Entonces puede crear un archivo de volcado usando la siguiente secuencia de comandos.

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, es posible que obtenga un volcado completo del repositorio anterior según la disponibilidad de espacio, o puede realizar el volcado en un intervalo breve (es decir, de 0 a 5000, luego de 5001 a 10000, etc.).

Paso 2: Ejecuta el script anterior usando el siguiente comando. Dependiendo de la versión del kernel, necesita ejecutar cualquiera de las siguientes dos consultas.

$ bash dump.sh > stdout.sh $ ./sh dump.sh > stdout.sh

Esto escribirá todos los comandos que tuvo que ejecutar utilizando el comando anterior en el archivo stdout.sh. Puede rastrear este archivo para su futura referencia.

Paso 3: compruebe si el firewall está abierto para el número de puerto 22 entre el servidor antiguo y el nuevo. Si no está abierto, solicite a su administrador que lo ponga a disposición.

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 anterior al servidor nuevo.

Paso 5: crea un nuevo repositorio para el nuevo servidor

$ svnadmin create <new_repository>

Paso 6: Ahora usa la secuencia de comandos siguiente para cargar todos 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 simples pasos anteriores, podrá migrar su repositorio existente a un nuevo repositorio. A través de este proceso, no necesita preocuparse por las revisiones corruptas de su repositorio existente.


Puede crear un archivo de volcado usando svnadmin dump , luego importar a un nuevo repositorio con svnadmin load .


Si no desea el historial, puede usar svn export para obtener una carpeta limpia sin las carpetas .svn y luego svn import a su otro repositorio.

Con la historia, necesitarías usar el svnadmin dump . Luego usaría svndumpfilter para filtrar solo las partes o rutas que quiera usar antes de usar svnadmin load .

Temas para leer:


Use el svnsync - Subversion Repository Mirroring :

svnsync es la herramienta de creación 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), lo que implica que una vez que se utilizan otros comandos SVN para modificar un repositorio espejo, svnsync no se debe volver a utilizar con ese espejo en particular:

svnsync es muy sensible a los cambios realizados en el repositorio espejo que no se realizaron como parte de una operación de duplicación. Para evitar que esto suceda, es mejor si el proceso svnsync es el único proceso permitido para modificar el repositorio espejo.