web-dev-qa-db-fra.com

Comment vider un projet d'un référentiel SVN contenant plusieurs projets?

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?

40
Stacey Richards

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
63
Avi

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.

0
Leos Literak