Pour Git, consultez les instructions à http://github.com/guides/import-from-subversion
La dernière fois que je l'ai fait manuellement, je les commandes ci-dessous. (Ce fut pour un projet qui n'a pas utilisé des balises ou des branches. En utilisant svn2git pourrait produire de meilleurs résultats que si vous avez des étiquettes ou des branches git-svn.)
cat "mysvnusername = Me Myself <[email protected]>" >> authors.txt
svnserve --daemon --foreground --root <SVN-REPO-PARENT-DIR>
git svn clone --stdlayout --authors-file=authors.txt --no-metadata svn://localhost/<SVN-REPO-NAME>
# push to a public repo and clone from there, to get push/pull working easily
cd <SVN-REPO-NAME>
git remote add origin [email protected]:mygithubusername/<GIT-REPO-NAME>.git
git push origin master
cd ..
rm -rf <SVN-REPO-NAME>
git clone [email protected]:mygithubusername/<GIT-REPO-NAME>.git
Mais puisque vous avez une mise en page de dépôt SVN non standard , vous devrez spécifier les paramètres --trunk, --tags et --branches au lieu de --stdlayout pour git svn clone.
Pour représenter toute l'histoire de l'héritage de votre dépôt, vous pouvez essayer de réorganiser votre dépôt de sorte qu'au lieu d'une hiérarchie non standard, vous auriez une mise en page de référentiel standard plat:
/branches/original-0.1
/branches/original-0.2
/branches/variantA-trunk
/branches/variantA-who-branch_for_xxx
/branches/variantA-she-branch_for_yyy
/branches/variantB-trunk
/branches/variantB-who-branch_for_zzz
...
Cela devrait faciliter pour importer des outils pour comprendre le référentiel. Ensuite, lorsqu'ils ont été importés, vous pouvez les réorganiser mieux dans le nouveau référentiel.
En outre, j'ai entendu que Git 1.6.x prend en charge le clonage en profondeur, de sorte que vous pouvez donner à git svn clone
des paramètres tels que --branches=branches/*/*
qui regardera profondément dans la hiérarchie pour les branches. Voir this post pour un exemple d'utilisation.
Comment vous abordez cela dépend largement de ce que DVCS vous allez utiliser. –