Comment migrer un repo svn vers git ? En utilisant svn2git bien sûr!
Mais attention il y a une grosse feinte, le conseil qui suit peut faire gagner des journées entières.
Le premier est bien référencé, correctement documenté et facile à mettre en oeuvre. Il fonctionne sur le serveur svn (très lent) ou à distance (très très très lent)
Mais globalement il ne marche pas dès que le repo svn est un peu complexe. (dans mon cas + 13000 révisions et déjà une migration depuis cvs!)
Le second ne sort pas en premier sur google, vous devrez compiler les sources, et la doc est bien cachée (en fait il n’y a que des exemples). Il ne fonctionne que sur le serveur svn.
Mais il est très rapide (moins de 5 min pour mon repo avec 13000 révisions) et permet simplement de définir des règles pour configurer la conversion des branches et tags. On peut même transformer un repo svn en n repo git en une seule passe.
Voici donc une mini doc pour utiliser le bon svn2git
Installer et compiler (sous ubuntu)
sudo apt-get install libsvn-dev libqt4-dev git clone git://gitorious.org/svn2git/svn2git.git cd svn2git qmake make
Vous devrier avoir un éxécutable: svn-all-fast-export
Créer un fichier auteurs
Git identifie les utilisateurs par leur email, svn par un identifiant, il faut donc créer un fichier de correspondance entre id svn et email, soit à la main soit de manière automatique
#!/usr/bin/env bash authors=$(svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2 }' | sort | uniq) for author in ${authors}; do echo "${author} = NAME "; done
Créer un fichiers rules
svn2git permet de décrire dans un fichier rules la manière dont on va mapper la structure de répertoire de svn dans des repos et branches git. Pour bien faire les choses il faut connaitre la structure des répertoires svn et leur évolution depuis le début. svneverever vous sera bien utile.
Go
./svn-all-fast-export --identity-map authors --rules rules --stats pathToYourSvnRepo
excellent utilitaire!!
Est il possible de garder une quelconque reference aux revisions de SVN lors de l’import, de maniere a les voir apparaitre lors d’un “git log” sur le reperoire git obtenu
Je ne pense pas avec svn2git. Pour conserver les n° de révision svn il faut passer par git-svn