Migration vers Github (Mercurial vers Git)

Comme vous le savez peut être déjà, Scopart met à disposition de la communauté des projets open source :

  • Rozenn qui est une librairie Flash/AS3 de journalisation (ou de log) qui vous offre un système hautement configurable, que ce soit au niveau des entrées d’enregistrement que la destination de ces derniers.
  • Colorex qui est un petit utilitaire écrit en Python qui vous permet de coloriser vos fichiers de log.

Ces deux projets étaient jusqu’à présent disponibles sur les serveurs du site Bitbucket qui utilise le système de gestion de version Mercurial. Nous avons décidé de les migrer vers le site Github qui comme son nom l’indique utilise Git. Cette migration vers Github est dûe au fait que ce dernier dispose d’une communauté grandissante ainsi que quelques fonctionnalités qui nous ont charmé. Par exemple la possibilité de créer des dépôts sous le nom d’une organisation qui peut regrouper plusieurs contributeurs.

 

Bien sur tout cela induit un changement de système de gestion de version. Le but étant bien évidemment de ne pas perdre tous les précédents « commit » effectués sur l’ancien système. Après une recherche d’un quart d’heure interminable sur l’Internet nous avons trouvé la solution idéale : hg-fast-export.

Je vais donc vous expliquer comment réaliser cette petite migration en toute sérénité.

La première chose à faire est de récupérer le petit utilitaire hg-fast-export (je pars du principe que vous avez déjà installé sur votre machine mercurial et git).

$ git clone git://repo.or.cz/fast-export.git

On crée sur Github le dépôt qui accueillera votre projet puis on le clone localement

$ git clone git@github.com:Scopart/colorex.git

 

On récupère aussi localement l’ancien dépôt Mercurial qui pour nous était hébergé chez Bitbucket

$ hg clone https://bitbucket.org/linibou/colorex colorex-hg

Ceci étant fait nous allons pouvoir lancer la commande de migration mais avant cela il y une petite étape : faire correspondre les noms des contributeurs Mercurial sur Bitbucket avec ceux de Github. En effet la différence entre les deux réside dans le fait que Mercurial s’appuie sur un pseudo alors que Git s’appuie sur une adresse email. Pour faire la correspondance il suffit de créer un fichier texte que l’on nommera « authors_map.txt » et qui prendra la forme suivante :

pseudo_mercurial1 = pseudo_git1 <email@autheur1.com>
pseudo_mercurial2 = pseudo_git2 <email@autheur2.com>

Tout est bon, nous pouvons réellement nous lancer dans la migration. Pour cela placez vous dans le répertoire du dépôt git qui doit recevoir les fichiers et lancez l’utilitaire de migration avec les bons arguments :

$ cd colorex
$ /chemin/hg-fast-export.sh -A /chemin/authors_map.txt -r /chemin/depot_mercurial/

Voila ! Normalement tout doit s’être bien passé, seul un rapport de migration doit s’être affiché sur votre écran.
Il faut maintenant se « déplacer » sur la « tête » du dépôt :

$ git checkout HEAD

Il ne vous reste plus qu’à envoyer les modifications du dépôt sur les serveurs de Github :

$ git push master origin

Félicitations ! Vous pouvez maintenant contempler vos sources et l’intégralité de vos branches, tags et commits sur Github. Vous remarquerez que chaque commit est bien associé avec le bon compte de l’auteur.

C’est ainsi que ce petit tutoriel touche à sa fin. J’espère qu’il vous aura été utile.

Pour finir, n’hésitez pas à utiliser et partager les projets Rozenn et Colorex ainsi que de faire vos retours de bugs et demandes de nouvelles fonctionnalités sur les pages Github prévues à cet effet.

Petite information de dernière minute, depuis hier Bitbucket permet l’hébergement de dépôt Git.