Branches dans mercurial

aide mémoire mercurial

Création d'un dépôt avec hg init. On y ajoute quelques données avec echo "bla" > bla, fichier qu'on intègre à la surveillance de modification avec hg add.

On commit tout ça par un gracieux hg ci -m "rien".

Dans le mouvement, on va créer une nouvelle branche pour le chien en tapant sur le clavier la séquences de touches suivantes hg branch chien. On manipule des fichiers hg rm bla; echo "wouaf" > wouaf car le chien ne blablatte pas, il wouafe.

On commit tout ça en prennant soin d'intégrer notre nouveau fichier par la commande suivante : hg add; hg ci -m "medor"

On vérifie le log de mercurial

hg log
changeset:   1:e8e46c31573d
branch:      chien
user:        Fabrice THIROUX <fabrice.thiroux@free.fr>
date:        Sun May 24 23:04:45 2015 +0200
summary:     medor

changeset:   0:e044ea64a3e9
user:        Fabrice THIROUX <fabrice.thiroux@free.fr>
date:        Sun May 24 23:04:23 2015 +0200
summary:     rien

On regarde avec ls, seul le fichier wouaf est présent (et heureusement). On retourne sur la branche default en executant un tai sabaki correspondant aux touches hg update default. On regarde avec ls, seul bla est présent. On modifie ce fichier et on commit. Nous voilà avec une révision pour la branche default.

changeset:   2:3f53c6d7f33d
tag:         tip
parent:      0:e044ea64a3e9
user:        Fabrice THIROUX <fabrice.thiroux@free.fr>
date:        Sun May 24 23:06:44 2015 +0200
summary:     blabla

changeset:   1:e8e46c31573d
branch:      chien
user:        Fabrice THIROUX <fabrice.thiroux@free.fr>
date:        Sun May 24 23:04:45 2015 +0200
summary:     medor

changeset:   0:e044ea64a3e9
user:        Fabrice THIROUX <fabrice.thiroux@free.fr>
date:        Sun May 24 23:04:23 2015 +0200
summary:     rien

On fusionne ensuite les deux branches avec hg merge -r 1 (la révision 1 appartenant à la branche wouaf). Mercurial nous avertit qu'il y a eu un changement sur le fichier bla ; on garde la version modifiée, pas celle de la branche chien, donc delete est le mauvais choix^1. Nous voilà désormais avec une branche default comportant les modifications de la branche chien^2. On commit les changements liés à la fusion des branches.

Pour fermer la branche chien, on bascule dessus avec un hg update chien, on la ferme avec hg commit --close-branch. On affiche toutes les branches avec hg branches -c

default                        3:f786079c7ecc
chien                          4:ddc54b2d567b (closed)

Voilou !

vue dans mercurial