2009-08-13 5 views
1

J'essaie d'importer un référentiel svn qui suit la convention svn standard (trunk/branches/tags). Le "problème" est qu'au dessous de chaque copie il y a deux répertoires totalement inutiles que j'aimerais vraiment éliminer dans mon repo git. Ma structure svn ressemble à ceci:Suppression des répertoires repo redondants lors de l'importation avec git-svn?

trunk/redundantdir1/redunddantdir2/realstuff 
branches/b1/redundantdir1/redunddantdir2/realstuff 
tags/t1/redundantdir1/redunddantdir2/realstuff 
... 

Dans svn ces deux répertoires n'a pas blessé autant, parce que la plupart des utilisateurs de simplement vérifier « RealStuff » et vers le bas. Avec git, je voudrais vraiment garder les directifs redondants hors du repo. Je ne suis pas prêt à commencer à changer la structure svn, et je dois être en mesure de garder le repo git synchronisé avec subversion pour (un court) temps. Suggestions ?

Répondre

1

Je ne suggère pas d'utiliser git-svn pour effectuer des branchements ou des fusions SVN, donc vous n'avez vraiment pas besoin des répertoires branches ou tags. Ensuite, vous pouvez simplement cloner la partie de la pension dont vous avez besoin comme ceci:

git-svn clone https://example.com/svnroot/trunk/redundantdir1/redunddantdir2/realstuff myprojectname 

Edit: Si vous avez besoin de faire des changements dans une branche (plutôt que de créer ou branches fusion que je vous conseille de faire avec du vrai svn), alors vous pouvez simplement cloner cette branche comme si git séparée comme:

git-svn clone https://example.com/svnroot/branches/b1/redundantdir1/redunddantdir2/realstuff myprojectname-b1 
+0

En fait, une bonne suggestion qui peut correspondre à la facture tant que je fusionne toujours revient au tronc dans svn et les récupère dans git à partir de là. Mais il y a au moins une branche dans svn que j'ai besoin d'entrer dans ce repo git. – krosenvold

+0

Je suggérerais d'utiliser un autre repo git pour faire des changements dans cette branche. –

+0

J'ai édité la réponse pour suggérer cela. –

0

Mon answer-this question pourrait également être utile.

Fondamentalement, l'idée est de séparer les git svn clone en deux opérations, d'abord git svn init de mettre en place le référentiel avec les exclusions, puis un git svn fetch tirer dans les révisions de svn:

git svn init <Svn repo url> -s --ignore-paths 'redundantdir1' 
git svn fetch 

Cela donne aussi vous l'option pour votre git d'être un clone étroit du repo svn, par exemple pour ignorer les premiers 12344 changesets dans le repo svn que vous pouvez faire:

git svn fetch -r 12345:HEAD 

a partir de là, git svn fetch ne fêtera que les changesets les plus récents.

Questions connexes