06 décembre 2012

Git et Hg sont dans un bateau...

Depuis que j'ai découvert Git j'ai du mal à m'en passer. Lorsque je suis contraint d'utiliser Subversion je passe par git-svn, ce n'est certes pas idéal mais c'est déjà d'un grand confort.

Pour aider l'équipe Devoxx à adapter leur application sur CloudBees, j'ai du utiliser Mercurial (Hg pour les intimes). Mercurial est très comparable à Git, mais un peu déroutantes pour un Git-iste car les commandes reprennent les même nom mais pour un usage différent (fetch devient pull, pull devient fetch pull, reset devient revert, revert devient backout, etc. Si vous devez faire l'exercice, garder ce tableau sous le coude.

Bref, j'ai eu la flemme d'apprendre Mercurial, ni d'utiliser SourceTree tout en mode graphique parce que... et bien la ligne de commande y'a que ça de vrai, n'est ce pas ?

Il faut savoir qu'il n'existe pas de passerelle officielle hg->git, contrairement à celle qui permet d'utiliser svn. Il existe par contre une passerelle inverse, très mature, qui permet aux utilisateurs de mercurial d'utiliser un repository git: hg-git. La raison de cette absence est apparemment philosophique, si j'ai bien tout suivi ...

Il existe donc pléthore de solution custom pour prendre en charge ce besoin. J'en ai donc testé quelques un pour finalement tomber sur git-remote-hg.

Comme expliqué sur le blog, comparée aux autres solution cette passerelle à l'avantage de se plugger dans les mécanisme de transport de git, et non de chercher à fournir des commands complémentaires du genre "git hg-clone". On travaille donc en pur git, mais avec un repository distant qui utilise le protocole "hg::*".

J'ai donc cloné le repo devoxx, tripatouillé deux trois fichiers de configuration, et voulu pousser tout ça dans bitbucket pour proposer une pull-request. J'ai alors eu un grand moment de solitude :


git-remote-hg fait apparaître les branches mercurial sous l'arborescence "branches", et la branche de développement du projet, équivalente du master git, est donc branches/default. J'ai passé un certain temps à tenter d'attacher mon master à la branche remote origin/branches/default sans succès. Tous les "--set-upstream"n'y ont rien changé. J'ai bien cru que j'allais devoir changer d'outil.

Au final, j'ai crée une branche locale branches/default (les branches git peuvent contenir le caractère '/', le saviez-vous ?) associée à la branche remote origine/branches/default, mergé mon master dedans, et j'ai (enfin) pu pousser tout ça sur bitbucket. Ouf!


Bizarrement, chaque push m'indique la création d'une nouvelle branche remote. Cela fonctionne donc mais l'intégration n'est pas encore parfaite.

Bref, si vous devez vous aussi jongler entre mercurial et git, cette solution semble intéressante, à condition de respecter du 1:1 avec les branches mercurial. Elle permet de synchroniser les repositories sans perte d'information, par exemple pour proposer un miroir Git d'un repo Hg, et vois évite de devoir choisir entre Git et Hg si vous en êtes à ce stade.

Au passage, au cours de mes tentatives j'ai découvert que Perforce venait tenter sa chance sur le territoire Git : http://www.perforce.com/blog/121001/improving-git-experience-everyone. De mon point de vue, question SCM, les jeux sont faits (en attendant le prochain :P)

10 commentaires:

Slade Wilson a dit…
Ce commentaire a été supprimé par l'auteur.
Slade Wilson a dit…



Of course, you are used to it such as I am used to using formal report format service. if you are faced with difficulties in your assignment so don't worry now I have told you about this service which will helps in your difficult time.

Will Steven a dit…

Our skilled lawyer Divorce in New Jersey provide a legal advice, represent in court

johnscena a dit…

La phrase "Git et Hg sont dans un bateau" pourrait être utilisée pour raconter une histoire humoristique ou pour souligner une situation absurde où deux méthodes concurrentes ou incompatibles de gestion de versions se retrouvent ensemble. Cela pourrait être une allusion humoristique aux défis de la gestion de versions dans le développement logiciel.
virginia beach personal injury attorney

Antony a dit…


I was really happy to find this article.
Abogado Criminal Federal de Nueva Jersey

Tracil a dit…

"Git et Hg sont dans un bateau" offre une perspective humoristique sur la coexistence de Git et Mercurial dans le monde du développement logiciel. Cette revue propose un regard ludique sur les différences entre ces systèmes de gestion de versions, évoquant avec légèreté les défis et avantages qu'ils présentent. Avec une approche joviale, la revue offre une manière divertissante de comprendre les dynamiques entre Git et Hg, suscitant le sourire des développeurs tout en soulignant l'importance de l'humour dans le domaine technologique. Une lecture agréable qui explore la relation entre ces outils de manière décontractée et accessible." divorce lawyers richmond va





Cameron a dit…

fairfax divorce attorney
Git and Hg are a winning combination of version control systems, offering powerful and complementary features for developers to work efficiently and collaboratively. These tools provide different yet complementary approaches, allowing developers to choose the one that best suits their needs and benefit from the advantages of both. They also offer flexibility and ease of use, making them ideal for managing software development projects. Developers can benefit from the advanced features of Git and the simplicity of Hg, enabling them to manage their projects effectively and collaborate transparently. The combination of Git and Hg is perfect, allowing developers to choose between them based on their preferences and project needs, resulting in optimal flexibility and efficiency.

KirstenSmallT a dit…

Looking for a skilled Divorce Lawyers Arlington VA for smooth and hustle free separation? Our skilled team will guide you

albertjamesen a dit…

Amazing, Your blogs are really good and informative. I got a lots of useful information in your blogs. Il faut savoir qu'il n'existe pas de passerelle officielle hg->git, contrairement à celle qui permet d'utiliser svn. Il existe par contre une passerelle inverse, très mature, qui permet aux utilisateurs de mercurial d'utiliser un repository git: hg-git. La raison de cette absence est apparemment philosophique, si j'ai bien tout suivi sex crime defense lawyers... It is very great and useful to all. Keeps sharing more useful blogs...

Unknown a dit…

Protective orders, which offer legal protection from abuse, are expressly designed to address domestic concerns in Virginia. With their wider application, restraining orders can be used to stop harassment or unwelcome contact in a variety of circumstances.
protective order vs restraining order virginia