how - respaldos svn
Svnadmin load from dumpfile causa "error de archivo no encontrado". ¿Ayuda? (5)
Acabo de experimentar este error, que rastreé hasta una actualización reciente del servidor y un ciclo de svnadmin dump/load
. El problema era que había configurado el repositorio en un directorio diferente al que se creó en.
En la máquina antigua, estaba usando inetd.conf
para ejecutar svnserve
:
svnserve -r /var/svn/main
y el repositorio estaba en / var / svn / main
Sin embargo, en la nueva máquina tuve inetd.conf
apuntando a /var/svn
:
svnserve -r /var/svn
Ya tuve un checkout del servidor antiguo, así que cuando intenté confirmar la ruta de destino no existía porque accidentalmente había agregado otro componente a la URL, por lo que svn://host/source/trunk
convirtió en svn://host/main/source/trunk
.
Podría haberlo solucionado moviendo los directorios, pero en su lugar elegí volver a escribir la URL de la copia de trabajo utilizando svn switch --relocate
.
Nota: un diagnóstico rápido para ver si este es el problema es cambiar a un directorio en su copia de trabajo, escriba svn info
para obtener la URL del repositorio y luego escriba svn ls <myUrl>
. Si esto da un error No repository found
entonces usted sabe que esta es la causa.
Dado:
Repository_1 - fuente
Repositorio_2 - destino
Creé un archivo de volcado de Repository_1 / Folder1 usando la combinación de svnadmin y svndumpfilter
Al cargar desde el archivo de volcado del Repositorio_1 / Carpeta1 al Repositorio_2 / Troncal, todo está bien PERO
Al cargar desde Repository_1 / Folder1 / Sub-folder (se creó otro volcado para esto) en Repository_2 / trunk, aparece el siguiente error:
svnadmin: File not found: transaction ''267-89'', path ''trunk/Folder1/Sub-folder''
¿Alguien puede explicar?
Como se indica en este hilo , svnrdump
funciona de manera diferente a svndump
.
svndump
+ svndumpfilter
:
- Vuelca todo el historial del repositorio, luego filtra las cosas que deseas. Esto lleva mucho tiempo en los repositorios grandes, incluso si solo está tomando un pequeño subárbol.
- Produce un archivo de volcado que probablemente se rompe de varias maneras, como crear archivos en directorios que no existen o copiar archivos de rutas que no existen.
svnrdump
:
- Produce un dumpfile autoconsistente.
- Requiere una ruta secundaria si desea hacer el equivalente de
svndumpfilter include
. Por ejemplo,svnrdump https://server.example.com/svn/repo/branches/1.4
tomaría todas las revisiones que afectan a /branches/1.4. - Puede requerir un adicional
| svndumpfilter include / --drop-all-empty-revs --renumber-revs
| svndumpfilter include / --drop-all-empty-revs --renumber-revs
.
En svnrdump
: svnrdump
probablemente funcionará mejor.
La carga del volcado falla porque la creación de trunk/Folder1
fue filtrada por svndumpfilter. Según esta publicación del blog , estos pasos son necesarios en el vertedero:
Puede crear un tronco / Carpeta1 en el volcado, editando el volcado y agregando a la primera revisión el siguiente bloque:
Node-path: trunk/Folder1
Node-action: add
Node-kind: dir
Prop-content-length: 10
Content-length: 10
PROPS-END
Este bloque debe insertarse en los bloques de propiedades de la primera revisión.
Entonces el volcado se puede cargar con svnadmin.
Resulta que la estructura (carpetas vacías) en destino necesita crearse previamente. Entonces, si quieres hacer esto:
Al cargar desde Repository_1 / Folder1 / Sub-folder (se creó otro volcado para esto) en Repository_2 / trunk
necesitas crear esta estructura en svn
Repository_2 / trunk / Folder1
nota: solo necesita crear los padres, no la carpeta en sí, así que NO CREAR Repository_2 / trunk / Folder1 / Sub-folder
obtendrá este error si alguien copió algo de trunk / Folder1 to trunk / Folder1 / Sub-folder. ya que solo ha incluido tronco / Carpeta1 / Subcarpeta en su volcado, ya no puede encontrar los archivos requeridos desde el tronco / Carpeta1 y se detiene con este error.
para resolver esto, debe asegurarse de incluir todo en el volcado que ha sido la fuente de una copia.