Mise À Jour Avril 2014
Il existe un outil appelé Svn2Git qui fait un assez bon travail de faire de ce processus un peu plus facile. La documentation sur le projet Github est assez bonne.
Il est intéressant de noter que tandis que git-svn par défaut tirant de tout le chemin que vous spécifiez, pas de branches, les marques et le tronc. Svn2git est à l'opposé. Il sera par défaut à la recherche d'un tronc, des branches et des tags sous le chemin et vous devez utiliser --nobranches
ou --notags
à dire ne pas effectuer de recherche pour ceux (même si cela peut annuler les avantages de svn2git).
Une fois que vous passer à Git, je vous suggère de passer tout le monde et de rester à l'aide de Git. C'est plus compliqué, mais la transition sera en vaut la peine. Github.com prend en charge l'accès des pensions de titres à l'aide d'un client Subversion (mais vous risquez de perdre la puissance de Git ramification) et qui pourrait être un bon bouche-trou.
Puis-je garder mon Subversion repo?
Lorsque vous utilisez la méthode ci-dessous pour se déplacer, tous les courants s'engage restera dans la Subversion des pensions. Vous pourriez être en mesure de faire une synchronisation de la Subversion des pensions de le repo Git, mais dans l'autre sens devient très compliqué, très rapide. Je ne recommanderais pas d'essayer de synchroniser de toute façon et il suffit de déplacer tout le monde en une fois.
Ce qui est puissant sur Git?
Git ramification est puissant mais il n'est pas tout, il est à Git. Avoir un historique complet localement signifie que vous pouvez faire tout ce que vous pouvez faire avec de la Subversion, mais sans avoir à contacter le serveur. L'examen et la recherche de l'histoire, de l'annulation des modifications, s'engageant localement, la ramification localement devenu immensément plus rapide. Git également de compresser les données, donc une Subversion (qui comprend seulement la dernière révision) finit par être d'environ la même taille qu'un Git checkout (qui inclut la totalité de l'histoire). Aussi, parce que les données sont compressées lors de son transfert, en poussant et en tirant sont bien plus rapide. Ne pas seulement pousser les branches Git, de tout mettre sur Git.
Comment faire pour déplacer des pensions de titres à l'aide de l' git svn
méthode.
Tout d'abord, clone de la Subversion des pensions. Cela peut prendre un moment.
git svn clone http://www.example.com/svn-repo/projectA/trunk/
Où http://www.example.com/svn-repo/
de l'URL de la Subversion repo et projectA/trunk/
est le chemin d'accès que vous souhaitez copier dans le dépôt Git.
Si vous avez une mise en page standard, telles que l' projectA/trunk
, projectA/branches/
et projectA/tags/
que vous pouvez ajouter --stdlayout
et clone à partir d'un annuaire comme ça
git svn clone --stdlayout http://www.example.com/svn-repo/projectA/ projectA.git-svn
Et, si vous avez un tronc, des branches et des tags dossier nommé autrement que ci-dessus, vous donnez git svn clone
des noms personnalisés pour chacun.
git svn clone --trunk my-trunk --branches my-branches --tags my-tags http://www.example.com/svn-repo/projectA/ projectA.git-svn
Une fois terminé tout ce que vous avez à faire est de pousser à la distance repo git avec --mirror
.
cd projectA.git-svn
git push --mirror git@github.com:Account/projectA.git
À ce stade, vous devriez faire de votre Subversion des pensions de lecture seule pour empêcher les gens de tenter de s'engager pour une sortie datée emplacement.