Je travaille avec un référentiel SVN avec de nombreux projets. Je dois déplacer quelques-uns des projets de ce référentiel dans des référentiels individuels, un pour chaque projet, en conservant l'historique.
J'ai pu utiliser svnadmin dump
pour vider le référentiel entier et svnadmin load
dans un autre référentiel, mais je ne trouve pas le moyen de ne décharger qu'un seul projet du référentiel d'origine afin de pouvoir le charger dans le nouveau. Est-ce possible? Si c'est le cas, comment?
Vous pouvez utiliser l'utilitaire svndumpfilter pour le faire. Le livre SVN a une bonne explication sur la façon de procéder.
Par exemple, une solution serait:
$ 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
Juste un petit ajout à la réponse @Avi et au commentaire @Kit.
Si vous utilisez svndumpfilter
, vous risquez de perdre un commit nécessaire au chargement du référentiel ( source ).
Dans mon cas:
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 solution consistait à valider d'abord un répertoire supérieur trunk
.