TUTO : Comment migrer proprement un repo SVN vers GIT ?

TUTO : Comment migrer proprement un repo SVN vers GIT ?

Que l’on travail seul ou à plusieurs sur un projet informatique, utiliser un gestionnaire de sources est devenu une pratique courante, voir indispensable.

Pour diverses raisons, certains continuent à travailler avec des gestionnaires de sources comme SVN et voudraient migrer vers GIT.

Cependant, malgré l’apparition d’outils comme git-svn facilitant une migration vers GIT, cela ne suffit pas toujours lorsque l’on a un grand historique de branches et de tags sur un repo SVN...

Par conséquent comment s’y prendre afin de migrer proprement un repo SVN vers GIT ?

Prérequis

  • Ubuntu (Linux)
  • Java
  • git
  • git-svn

Je pars du postulat que vous êtes un habitué des environnements Linux, git, svn ... Car je ne donne pas plus d'infos sur comment installer git-svn, git,  svn ...

ETAPE 1 : Préparation de l’environnement

  1. Démarrez votre terminal
  2. Exécuter cette commande :
  3. $ mkdir -p  ~/svn-to-git/tools
    
  4. Téléchargez le script de migrattion-svn-to-git puis placez le fichier svn-migration-scripts.jar dans votre répertoire ~/svn-to-git/tools.
  5. Exécutez ces commandes:
  6. $ cd ~/svn-to-git
    $ java -jar tools/svn-migration-scripts.jar verify
    

 

ETAPE 2 : Mapping des auteurs (commiters) dans un fichier auteurs

  1. Exécutez cette commande
  2. Editez le fichier authors.txt et vérifiez les correspondances, au besoin les modifier.
  3. IDuser1 = Elton John 
    IDuser1 = Barak Obama 
    IDuser2 = Eli Yafa 
    IDuser3 = Marcus GARVEY
    IDuser3 = Marcus GARVEY
    

ETAPE 3 : Il est temps de miger !

$ git svn clone --localtime --stdlayout --authors-file=authors.txt http://svn.myurl.com/path/to/my/project project
$ cd project
$ java -Dfile.encoding=utf-8 -jar ../tools/svn-migration-scripts.jar clean-git
$ java -Dfile.encoding=utf-8 -jar ../tools/svn-migration-scripts.jar clean-git --force

ETAPE 4 : Pusher les changements sur le repo GIT

$ git svn clone --localtime --stdlayout --authors-file=authors.txt http://svn.myurl.com/path/to/my/project project
$ git config --global user.name "Billy Jean"
$ git config --global user.main "Billy.Jean@mysite.com"

$ git remote add origin git@git.myrepos.com/project.git
$ git push -u origin --all
$ git push --tags
0

Dites ce que vous pensez, laissez un commentaire !