¿Cómo puedo volcar un proyecto de un repositorio SVN que contiene varios proyectos?


Estoy trabajando con un repositorio SVN con muchos proyectos. Necesito mover algunos de los proyectos de ese repositorio a repositorios individuales, uno para cada proyecto, manteniendo el historial.

He podido usar svnadmin dump para volcar todo el repositorio y svnadmin load en otro repositorio, pero no puedo encontrar una manera de volcar solo un proyecto desde el repositorio original, así que puedo cargarlo en el nuevo. Es esto posible? Si es así, ¿cómo?

Author: Peter Mortensen, 2008-12-03

2 answers

Puede usar la utilidad svndumpfilter para hacer esto. El libro SVN tiene una buena explicación de cómo hacer esto.

Por ejemplo, una forma sería:


$ svnadmin dump /path/to/repo 
     | svndumpfilter include /proj > dump-file
$ svnadmin create /new/proj/repo
$ svnadmin load --ignore-uuid /new/proj/repo < dump-file
$ svn rm file:///path/to/repo/proj
 61
Author: Avi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-02 08:34:45

Solo una pequeña adición a @Avi respuesta y @Kit comentario.

Si usas svndumpfilter, puedes perder un commit necesario para cargar el repositorio (source).

En mi caso:

cat dump | svndumpfilter --drop-empty-revs --renumber-revs include trunk/project > project.dump 
svnadmin load --ignore-uuid /opt/svn/newlocation < project.dump
<<< Started new transaction, based on original revision 1 
svnadmin: File not found: transaction '0-0', path 'trunk/project'

La solución fue confirmar primero un directorio superior trunk.

 0
Author: Leos Literak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-01 12:55:35