Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - mercurial

Fil des billets - Fil des commentaires

jeudi, septembre 1 2011

Jelix : de Mercurial à Git

Depuis deux ans déjà, j'ai complètement abandonné subversion et utilisé Mercurial pour gérer le code source de mes projets. J'avais choisi Mercurial au départ parce que je devais l'utiliser pour contribuer à Firefox. J'avais alors apprécié le produit et l'avais adopté pour mes autres projets personnels. Pour les projets professionnels comme chez Zoomorama, et ou pour Jelix, nous (moi et mes collègues ou les contributeurs) avions étudié bien sûr Git avant de choisir Mercurial. À l'époque, Mercurial paraissait plus simple d'utilisation : des commandes plus claires, plus concises, moins verbeuse. Il avait aussi un meilleur support multi-plateforme en particulier sous windows. Ce dernier critère me paraissait essentiel par exemple pour Jelix, car j'avais des contributeurs sous Windows.

Lire la suite...

dimanche, novembre 7 2010

Mercurial/Git : ne pas "brancher" est une erreur

Et c'est une erreur que j'ai faite pour le développement de Jelix 1.2. Cela a conduit à un gros retard (presque 1 an !) sur la sortie de la version stable, avec toutes les conséquences qu'un retard de la sortie d'une version d'un projet peut avoir.

Lire la suite...

vendredi, août 14 2009

De la bonne redaction des messages d'avertissements

J'ai eu un truc que je ne comprenais pas avec Mercurial. J'avais créé une branche nommée sur mon dépôt local, et fait des commits. Du coup, tout logiquement, j'avais deux "heads", une pour la branche nommée, et une autre pour la branche "default". Au moment de faire mon push, Mercurial a ralé, comme quoi ça allait créer des nouvelles têtes sur le dépôt distant, et me disait qu'il faudrait faire un merge avant de faire le push. Le problème, c'est que je ne veux pas fusionner les deux branches !

Du coup, j'ai eu un gros doute sur ma compréhension de ce qu'était un head, une branche nommée et à quoi ça servait. Mais j'avais beau lire la doc, il me semblait bien avoir compris tout ceci. Et ça ne m'avançait pas sur le pourquoi de l'erreur de Mercurial. Pourquoi fallait-il absolument faire un merge ? Pourquoi avoir un système de branches si c'est pour les fusionner systématiquement ?

Et puis j'ai expliqué mon problème sur le channel irc de Mercurial, et je fus plutôt rassuré. Ou presque. Parce qu'en fait, c'est moi qui n'ait pas tout à fait compris le sens du message d'erreur. Je l'ai trop pris au pied de la lettre. Ce n'est pas une erreur, mais un avertissement, et l'ordre qu'il faille fusionner, n'est pas un ordre, mais une simple proposition pour résoudre le problème (parmis d'autres non explicitées). Et on m'a expliqué qu'en fait, je devais forcer[1] le push avec l'option -f , et que dans les prochaines versions, le message sera plus explicite (pas seulement indiquer qu'il faut merger) ou n'apparaitra plus tout simplement (j'imagine, seulement dans les cas où il s'agit que de têtes de branches, et pas plusieurs têtes sur une même branche).

Bref, voilà mes doutes levés. Je peux continuer à travailler :-)

Notes

[1] ce qu'en fait j'hésitais à faire avant, parce que quand on force les choses, bien souvent ça apporte des ennuis

lundi, juillet 20 2009

En plein dans le Mercure

En ce moment, je m'amuse pas mal avec Mercurial.

Chez Zoomorama, parce que Subversion devenait limitant pour nous, nous avons décidé de migrer vers Mercurial. On a pas mal recherché et discuté des différents avantages et inconvénients entre git et mercurial, et hg nous semble plus approprié pour nos besoins.

  1. Mercurial nous semble plus propre d'un point de vue des commandes (Il n'y a pas 144 scripts différents avec des dépendances dans tout les sens comme dans Git) et il est presque aussi simple à utiliser que subversion. Cela nous fera gagner du temps pour s'approprier l'outil.
  2. Il y a une très bonne documentation (bien que celle de Git semble s'améliorer), entre autre ce guide
  3. Et surtout il a un bon support sur toutes les plateformes, ce qui est important pour nous puisqu'on fait, entre autres choses, des applis multi plateformes basées sur Mozilla.
  4. On utilise Gecko, en le modifiant, et Gecko étant sous Mercurial, ça ne nous fait pas apprendre un nième outils.

Au niveau fonctionnalités, Git et Mercurial se valent je trouve, surtout dans les fonctionnalités de base. Mercurial a beaucoup progressé et comblé son relatif retard ces derniers temps. Et vu qu'on ne va pas forcément utiliser les fonctionnalités super avancées de ces outils ce n'est pas sur ce point qu'on a pu les départager (quoique, j'apprecie beaucoup l'extension mq de Mercurial)... D'un point de vue performance, on n'a pas des projets de plusieurs dizaines de millions de lignes de code, aussi je ne pense pas que Mercurial va nous pénaliser (bien qu'il parait qu'il est plus lent que Git sur certaines opérations).

Le seul inconvénient qu'on lui trouve : le site officiel est moche par rapport à celui de git :-), mais heureusement, il y a un nouveau site plus propre : http://hg-scm.org/.

Un bon comparatif (sans troll et assez objectif je trouve) qui a fini par nous convaincre : Git vs Mercurial.

Et puis, du coté de mes projets perso, je suis en train aussi de passer aussi à Mercurial. Pour Jelix, je viens de monter http://hg.jelix.org. Je dois encore configurer les droits d'accés pour le push via ssh (c'est moins classe à configurer que pour subversion [1]) et quelques autres broutilles (comme modifier les cron des builders de nightlies). Je vais enfin pouvoir commiter dans le train !

À propos de gestionnaire de sources, le projet PHP vient de changer lui aussi de système. Ils ont enfin délaissé CVS pour utiliser Subversion. Je m'étonne toutefois qu'ils ne se soient pas orienté vers Git, Mercurial ou un autre système décentralisé. Surtout que je n'arrive pas à mettre la main sur leurs arguments en faveur de Subversion par rapport à Git/Mercurial.

Notes

[1] en fait non, une fois compris le truc, c'est bien plus puissant, en utilisant http://hg.opensource.lshift.net/mercurial-server/ et je viens de terminer sa configuration :-)

jeudi, mai 28 2009

Commit access on Mozilla repositories

After 5 years of Mozilla hacking, and some patches accepted and landed into the Mozilla trunk, I finally asked yesterday an access to commit on Mercurial repositories of Mozilla. And this request has been granted ! Youhouuu !

For me, it's a sort of gratefulness from the other contributors :-) Thank you Mozilla !

vendredi, septembre 12 2008

Hg ou Svn ? That is the question...

Vu que je bosse sur le code de Mozilla, je suis bien obligé d'utiliser Mercurial. Et plus j'utilise, plus j'adore. Surtout son système de pile de patch (l'extension Mq).

Se pose à moi alors la question : pour mon projet Jelix, devrais-je remplacer totalement Subversion par Mercurial ? Ou simplement utiliser Mercurial en local avec hgsvn qui me permettrait de mettre à jour mon dépot Mercurial local à partir du dépot Subversion central ?

En fait, personnellement, je n'ai pas de souci à utiliser Mercurial, bien au contraire, il apporte beaucoup de chose. Mais c'est vis à vis des contributeurs, et surtout des contributeurs potentiels. Je trouve l'utilisation d'un système de gestion de version distribué un poil plus compliquée qu'un centralisé comme Subversion, avec des concepts pas forcément évident à appréhender, surtout quand on est habitué à Subversion ou CVS. En clair, j'ai peur qu'imposer l'utilisation de Mercurial fasse peur (Déjà que j'ai l'impression que l'utilisation d'un outil de versionning ne semble pas encore être la norme en entreprise et que j'ai rencontré pas mal de développeurs web qui savaient à peine ce que c'était que cvs, svn...).

Mais peut-être me fais-je des idées ?

Et vous, qu'en pensez-vous ?

mardi, avril 24 2007

Mozilla choisit Mercurial

Pour le projet Mozilla 2 (qui correspond au développement de Firefox 4 et de XulRunner 2), Mozilla a décidé d'abandonner CVS. Ils ont choisi d'utiliser un autre système de gestion de version (ou VCS), décentralisé cette fois ci : Mercurial, appelé aussi hg (symbole du mercure ;-) ). Le choix n'a pas été facile, car ils ont un certains nombres de besoins. Une étude approfondie et des tests ont été fait sur plusieurs produits (dont Bazaar) mais il semble au final que Mercurial soit le mieux adapté.

Le développement de Firefox 3, Thunderbird 3 et de Gecko 1.9 continue par contre sur CVS. Et il n'est pas prévu d'exporter tout l'historique du dépôt CVS dans le dépôt Mercurial, trop compliqué et finalement pas très utile, dans la mesure où le dépôt CVS restera en ligne même après la fin des développements sur FF 3, TB3. Cependant, un import quotidien des modifications effectués dans le dépôt CVS est fait vers le dépôt Mercurial.

Je vais donc voir un peu comment fonctionne Mercurial, la notion de VCS décentralisé m'étant quelque peu flou pour le moment.