L'importazione di un repository Subversion con un layout non standard in Git
-
29-09-2019 - |
Domanda
Sto cercando di (definitivamente) la migrazione di repository Subversion del mio gruppo a Git, ma sto correndo su problemi cercando di ripulire la sua struttura di directory non-standard.
Alcuni dei contenuti del progetto è contenuto in cartelle tronco e rami, ma non tutto. Il progetto su Subversion è disposto in questo modo:
project/trunk/
project/branches/feature_1
project/branches/feature_2
project/libraries
project/crontab
...
Dopo l'importazione, voglio che il repository Git per essere disposti in questo modo:
project/html # the content of the old trunk and branches folders
project/libraries
project/crontab
...
svn2git
Correndo con le opzioni appropriate gestirà correttamente i tronco ei rami le directory, ma come posso includere anche la storia per le altre cartelle? Sembra git-filter-branch
potrebbe aiutare, ma non sono sicuro come usarlo per questo.
Soluzione
Importa ogni sottocartella principale del pronti contro termine in un repo git separata e quindi utilizzare il sottostruttura fusione metodo per unire i repository git in uno repo. Si può finire con un paio di commit duplicati però.
Se si dispone di molte sottodirectory si consiglia di fare un svnadmin dump
, poi svndumpfilter exclude ..
due volte per dividere il repo svn in due metà e quindi utilizzare la sottostruttura metodo per la fusione ri-unirsi a loro. Ciò avrebbe una storia più pulita di fare molte unioni sottostruttura.