Come posso scaricare un progetto da un repository SVN che contiene più progetti?
-
22-07-2019 - |
Domanda
Sto lavorando con un repository SVN con molti progetti. Devo spostare alcuni dei progetti da quel repository in singoli repository, uno per ciascun progetto, mantenendo la storia.
Sono stato in grado di utilizzare svnadmin dump
per scaricare l'intero repository e svnadmin load
in un altro repository, ma non riesco a trovare un modo per scaricare solo un progetto dal repository originale in modo da poterlo caricare nel nuovo. È possibile? Se sì, come?
Soluzione
Puoi utilizzare svndumpfilter utility per fare questo. Il libro SVN ha una una buona spiegazione di come farlo.
Ad esempio, un modo sarebbe:
$ 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
Altri suggerimenti
Solo una piccola aggiunta alla risposta @Avi e al commento @Kit.
Se si utilizza svndumpfilter
, si potrebbe perdere un commit necessario per caricare il repository ( source ).
Nel mio 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 soluzione consisteva innanzitutto nel commit di una directory superiore trunk
.