tortoise subir revertir repositorio que proyecto español eliminar con como cambios archivos svn repository folder move

subir - tortoise svn server



¿Cómo muevo una sola carpeta de un repositorio de Subversion a otro repositorio? (6)

Tengo una carpeta de "documentos" en un repositorio de Subversion llamado "proyecto". Llegué a la conclusión de que realmente debería mantenerse en un repositorio de Subversion separado llamado "project_docs".

Me gustaría mover la carpeta "documentos" ( y todas sus revisiones ) al repositorio "project_docs". ¿Hay alguna forma de hacer esto?


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


No creo que pueda hacerlo de forma remota (es decir, sin una copia local). Pero esto debería funcionar: svn export la carpeta desde el servidor original, luego svn add a tu nuevo repositorio.

Me gusta:

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

Editar: D''oh, esto deja la historia. Use svnadmin como Samuel describe .


Para futura referencia:

La documentación de SVN informa claramente:

Si planea editar manualmente el archivo de volcado para eliminar un directorio de nivel superior, asegúrese de que su editor no esté configurado para convertir automáticamente caracteres de final de línea al formato nativo (por ejemplo, / r / n a / n), ya que el contenido no estará de acuerdo con los metadatos. Esto hará que el archivo de volcado sea inútil.

Use sed o Vim para sustituir el directorio de nivel superior, pero este nombre de directorio también estaba dentro de un archivo de proyecto. Esto causa un error de suma de comprobación de carga SVN.

Por lo tanto, cuando realice esta operación, no realice sustituciones de cadenas con sed de solo el nombre de ruta.

Sustituya "Node-path: old_path" con "Node-path: new_path". Consulte el capítulo 5 del SVN "Administración de repositorios" para más detalles.


Si tiene acceso al repositorio en sí (no a una copia de trabajo), debe poder volcar el repositorio actual, filtrarlo para incluir solo información sobre la carpeta de documentos y cargarlo en el otro repositorio.

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, no puede mantener el historial de revisiones y debe conformarse con copiar los archivos en el nuevo repositorio y confirmarlos.


Traté de usar la respuesta aceptada, pero tenía un gran repositorio y quería exportar un pequeño directorio, y no podía permitir el volcado de todo el repositorio.

Por lo tanto, solo exporté las revisiones donde mi directorio cambió (Esto puede no funcionar si el directorio que desea exportar tiene referencias a otros lugares en su repositorio).

svn log URL_to_docs | awk ''/^r/{gsub(/^r/,"",$1);print $1}'' > revisions.txt #tac for revisions in reverse (oldest revision first) tac revisions.txt | while read line; do svnadmin dump /svn/old_repo -r$line >> ./docs_revisions.dump ; done #You don''t have to filter if you commited only files in your directory docs in your exported revisions svndumpfilter include path/to/docs --drop-empty-revs --renumber-revs --preserve-revprops < ./docs_revisions.dump > ./docs_only.dump svnadmin load /svn/new_repos < ./docs_only.dump

Debe reemplazar su URL repo ( URL_to_docs ), la ubicación en el servidor ( /svn/old_repo ) y la ruta a documentos en el repositorio ( path/to/docs )

Puede editar fácilmente su docs_only.dump si desea cambiar la ubicación de su directorio doc en su nuevo repositorio.


svndumpfilter tiene un defecto grave: si un archivo o ruta se copió de una ruta que está filtrando a la que está filtrando, svndumpfilter no podrá completar el historial y el trabajo fallará.

Puedes usar svndumpfilter2 si experimentas este problema.