2009-09-28 10 views

Respuesta

7

Debe svnadmin dump su repositorio, procese el archivo de la descarga y carga svnadmin el archivo procesado en un repo vacío. No svndumpfilter necesario.

svnadmin dump /repos/path > old.dump 

El archivo de volcado pueden procesarse con Sed u otra herramienta (asegúrese de que los datos binarios no se corrompe) y sustituir el nombre del directorio. Por ejemplo:

sed -b -e "s#^\(Node.*path\): dir1/dir_old#\1: dir1/dir_new#" old.dump > new.dump 

Una vez que haya terminado de procesar el archivo de volcado:

svnadmin create /newrepos/path 
svnadmin load /newrepos/path < new.dump 
+2

No procese una estructura de datos compleja como un volcado svn con una herramienta simple como sed. Nadie te garantiza que la cadena ': dir1' nunca aparezca en otro lugar. – reto

+2

En ese caso, obtendría un error de 'Checksum mismatch' cuando cargue el archivo procesado. Vea el formato de archivo de volcado: http://svn.apache.org/repos/asf/subversion/trunk/notes/dump-load-format.txt – fglez

+0

Eso es asombroso. Funciona. ¡Es la única manera simple de moverse con carpetas en svn dump! – qub1n

3

sin duda me recomiendan no usar sed, porque no es consciente del formato de archivo y es posible que hacer fácilmente inutilizable el archivo de volcado SVN.

Además, si desea reemplazar un poco más que solo una ruta, necesita actualizar o simplemente eliminar las sumas de comprobación SHA1 y MD5.

Modificar un volcado SVN en realidad no es tan trivial como podría parecer al principio.

Ayer tuve el mismo problema y escribí un pequeño programa para este propósito. Lo publiqué aquí para que todos puedan usar:

https://github.com/nlmarco/svndumptransformer

Es software libre y le invitamos a modificarlo, si se quiere/necesita más características.

Este programa modifica solo el contenido de texto (si un archivo, por ejemplo, una imagen, está marcado para tener el tipo mime "application/octet-stream", no se modifica). Y como realmente lee y entiende el formato de volcado SVN, no modifica los datos estructurales que pertenecen al volcado SVN, a diferencia del comando sed anterior.

Para mí, este programa, como se trabaja actualmente bien al cambiar el nombre de un producto, hace que se renombren todas las rutas y los archivos de configuración del proyecto (=> gradle) y algunas docenas de clases Java.

Espero que este programa también sea útil para otras personas.

Btw. Soy consciente de que esta pregunta es muy antigua, pero espero que mi respuesta pueda ayudar a otras personas que enfrentan este problema, ahora.

Cuestiones relacionadas