2010-10-11 4 views
3

J'essaye de migrer (de façon permanente) le dépôt Subversion de mon groupe vers Git, mais je suis confronté à des problèmes pour essayer de nettoyer sa structure de répertoire non standard.Importer un référentiel Subversion avec une disposition non standard dans Git

Une partie du contenu du projet est contenue dans les dossiers de liens et de branches, mais pas tous. Le projet sur Subversion est aménagé comme ceci:

project/trunk/ 
project/branches/feature_1 
project/branches/feature_2 
project/libraries 
project/crontab 
... 

Après l'importation, je veux que le dépôt Git à être aménagé comme ceci:

project/html # the content of the old trunk and branches folders 
project/libraries 
project/crontab 
... 

Exécution svn2git avec les options appropriées traitera le tronc et répertoires branches correctement, mais comment puis-je également inclure l'historique pour les autres dossiers? Il semble que git-filter-branch pourrait aider, mais je ne suis pas sûr de savoir comment l'utiliser pour cela.

+1

Le (http://stackoverflow.com/questions/614229/can-i-move-the-git-directory-for-a-repo-to-its-parent-directory) peut vous aider. – VonC

+1

pourquoi ne pas faire un 'svn move' pour obtenir la structure appropriée et ensuite faire un svn2git? vous aurez toujours l'histoire, n'est-ce pas? –

+0

@Version Control Buddy: Après l'importation, le référentiel Git considérera l'ancien dossier 'project/trunk' comme sa racine. Les dossiers 'svn move'd dans le tronc avant que l'importation ait un historique, mais leurs emplacements d'origine seront toujours en dehors de la racine du référentiel, et ils seront ignorés. –

Répondre

0

Importez chaque sous-dossier principal de votre dépôt dans un dépôt git séparé, puis utilisez la méthode subtree merging pour fusionner les dépôts git en un seul dépôt. Vous pouvez vous retrouver avec quelques commits en double cependant.

Si vous avez plusieurs sous-répertoires, vous voudrez peut-être faire une svnadmin dump, puis svndumpfilter exclude .. deux fois pour diviser votre repo svn en deux moitiés, puis utiliser la méthode de fusion des sous-arbre pour les réintégrer. Cela aurait une histoire plus propre que de faire beaucoup de fusion de sous-arbres.

Questions connexes