155 votos

¿Cómo mover una sola carpeta desde un repositorio de Subversion a otro repositorio?

Tengo una carpeta "docs" en un repositorio de Subversion, llamado "proyecto". He venido a la conclusión de que realmente debe ser guardado en un repositorio Subversion separado llamado "project_docs". Me gustaría mover la carpeta "docs" (y todas las revisiones es) en el repositorio "project_docs". ¿Hay alguna manera de hacer esto?

179voto

Samuel Puntos 21085

Si usted tiene acceso al repositorio de sí mismo (no una copia de trabajo), usted debe ser capaz de volcar el repositorio actual, filtro para incluir sólo información sobre la carpeta docs y cargarlo en el repositorio de otro.

Sería algo como esto:

svnadmin dump /svn/old_repos > ./repository.dump
svndumpfilter include path/to/docs --drop-empty-revs --renumber-revs --preserve-revprops < ./repository.dump > ./docs_only.dump
svnadmin load /svn/new_repos < ./docs_only.dump

Sin acceso al repositorio, usted no puede mantener el historial de revisiones y tiene que conformarse con copiar los archivos en el repositorio de nuevo y cometer.

29voto

compie Puntos 3773

svndumpfilter tiene un grave defecto - si un archivo o ruta fue copiada de un camino que está filtrando a que es filtrado en, svndumpfilter no será capaz de completar la historia y el trabajo se producirá un error.

Puede utilizar svndumpfilter2 si experimenta este problema.

6voto

Adam Bellaire Puntos 42797

Esto se discute en la documentación del svn. Consulte la sección Mantenimiento del repositorio de svndumpfilter ... Específicamente describe cómo volcar proyectos fuera de un repositorio central y muévalas a repositorios de nuevos y separados.

2voto

nios Puntos 48

Para referencia en el futuro:

SVN documentación claramente informes: Si usted planea en la edición manual del archivo de volcado para eliminar un directorio de nivel superior, asegúrese de que el editor no está configurado para convertir de forma automática de fin de línea, caracteres en el formato nativo (por ej., \r\n a \n), como el contenido, a continuación, no está de acuerdo con los metadatos. Esto hará que el archivo de volcado inútil.

Entonces, ¿por qué no usar sed o vim para sustituir el directorio de nivel superior, pero este nombre de directorio estaba contenida dentro de un archivo de proyecto!!!! Esto hace que svn de carga error de suma de comprobación

Así que al realizar esta operación, no hacer sustituciones de cadena con sed de sólo el nombre de ruta de acceso.

Sustituir "Nodo de la ruta: old_path" con "Nodo de la ruta: new_path". Ver SVN libro capítulo 5 "repositorio de administración" para más detalles.

2voto

Peter Stone Puntos 1962

No creo que puedes hacerlo remotamente (es decir, sin una copia local). Pero esto debería funcionar: svn export la carpeta del servidor original, entonces svn add a tu nuevo repo.

Como:

$ svn checkout svn://example.net/newrepo .
$ svn export svn://example.com/oldrepo/mydir ./mydir
$ svn add ./mydir; svn commit

Editar: Oh, esto disminuye la historia. Uso svnadmin como Samuel describe.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X