Passer de svn à git

Posté le mar. 16 juillet 2013

Sur le projet Addictradio nous utilisons encore un de nos dépot avec svn. Il est temps de faire la migration de svn à git !

J'ai testé plusieurs méthodes et aucune ne fait exactement ce que je voulais voici donc ma procédure :

svn log --quiet 'svn://svn.mondomaine/monprojet' | grep "^r" | awk
'{print $3}' | sort | uniq | awk '{ print $1" = "$1"
<"$1"@mondomaine>" }' > authors.txt

J'ai ensuite édité authors.txt pour remplacer nos différents pseudos par nos prénoms et noms puis j'ai vérifié les adresses e-mails.

Puis j'ai utilisé git svn clone :

git svn clone 'svn://svn.mondomaine/monprojet' --no-metadata
--authors-file=authors.txt --tags=tags --branches=branches
--trunk=trunk monprojet

Si vous avez des tags dans svn, vous pouvez les mettre dans git :

git branch -r | sed -rne 's, \*tags/([^@]+)$,\\1,p' | while read
tag; do echo "git tag $tag 'tags/${tag}^'; git branch -r -d
tags/$tag"; done | sh

Pour finir ajoutez votre dépot distant :

git remote add origin git@git.mondomaine:/monprojet.git
git push -u origin --tags