Avec Mercurial, il y a aussi l'action rebase, même si je ne l'utilise pas.
J'ai plutôt tendance à utiliser des MQs, voire aussi à les versionner elle-mêmes.
Qu'est-ce que les MQs ? C'est une série de patchs que tu peux empiler (qpush) et dépiler (qpop), les réordonner, le tout à volonté. Il y a d'autre possibilités, mais ceci est la base.
Quand je travaille sur une fonctionnalité ou une correction de bug, je commence toujours une MQ. Par exemple, je décide d'ajouter une nouvelle fonction, et de l'utiliser un peu partout pour mutualiser le code :
créer une MQ (automatiquement) et un premier patch
hg qnew add-new-function
ajouter de la nouvelle fonction
créer un second patch
hg qrefresh && hg qnew use-new-function
modifier le code pour appeler la nouvelle fonction
s'apercevoir que l'API a un manque
dépiler au premier patch
hg qrefresh && hg qpop
changer la fonction
empiler au patch suivant
hg qrefresh && hg qpush
modifier le code
s'apercevoir d'un bug dans la fonction
dépiler au premier patch
hg qrefresh && hg qpop
corriger la fonction
empiler au patch suivant
hg qrefresh && hg qpush
tester, ça marche
hg qfinish
Et voilà. Et on peut aussi versionner les MQs, qui du coup se trouvent être un repository Mercurial à part entière, donc on peut le clonner, le pusher et le puller. Si je fais une MQ sur une machine A, et que je veux l'utiliser sur une machiune B , je peux, au choix :
la cloner depuis la machine B via ssh vers la machine A
la pusher depuis la machine A vers un repository en ligne, et ensuite la cloner sur la machine B
clonner la MQ sur une clé USB sur la machine A, transférer la clé vers la machine B, et cloner la MQ depuis la clé USB sur la machine B
J'utilise le plus souvent 1. et 2. Par exemple, pour le projet que je maintein et développe :
Ça fait aussi un espèce de rebase, si on veut. Alors oui, il y a certains petits manques par rapport à git. Par exemple, si un patch est déjà appliqué, qpush ne s'en aperçoit pas. C'est pas très grave, un qdelete fait l'affaire.
Franchement, ce sont pour moi devenues des opérations triviales^Wbanales.
J'utilise Mercurial pour gérer mon ${HOME}, pour gérer mes scripts de déploiement de machines virtuelles, etc...
D'accord, peut-être que ça ne passe pas à l'échelle comme pour le noyau Linux, quoique de très gros projets sont gérés avec brio sous Mercurial.
[^] # Re: Mon utilisation de git ...
Posté par ymorin . En réponse au message SubVersion vs Mercurial vs Git .... Évalué à 3.
Avec Mercurial, il y a aussi l'action rebase, même si je ne l'utilise pas.
J'ai plutôt tendance à utiliser des MQs, voire aussi à les versionner elle-mêmes.
Qu'est-ce que les MQs ? C'est une série de patchs que tu peux empiler (qpush) et dépiler (qpop), les réordonner, le tout à volonté. Il y a d'autre possibilités, mais ceci est la base.
Quand je travaille sur une fonctionnalité ou une correction de bug, je commence toujours une MQ. Par exemple, je décide d'ajouter une nouvelle fonction, et de l'utiliser un peu partout pour mutualiser le code :
Et voilà. Et on peut aussi versionner les MQs, qui du coup se trouvent être un repository Mercurial à part entière, donc on peut le clonner, le pusher et le puller. Si je fais une MQ sur une machine A, et que je veux l'utiliser sur une machiune B , je peux, au choix :
J'utilise le plus souvent 1. et 2. Par exemple, pour le projet que je maintein et développe :
Pour utiliser ces deux MQs :
(La MQ default est toujours créée.)
Et après, je peux les pusher en retour vers le serveur:
Maintenant, si le repository a changé, je dépile ma MQ, je pull les nouveaux changements, et je réapplique la MQ en résolvant les conflits :
Ça fait aussi un espèce de rebase, si on veut. Alors oui, il y a certains petits manques par rapport à git. Par exemple, si un patch est déjà appliqué, qpush ne s'en aperçoit pas. C'est pas très grave, un qdelete fait l'affaire.
Franchement, ce sont pour moi devenues des opérations triviales^Wbanales.
J'utilise Mercurial pour gérer mon ${HOME}, pour gérer mes scripts de déploiement de machines virtuelles, etc...
D'accord, peut-être que ça ne passe pas à l'échelle comme pour le noyau Linux, quoique de très gros projets sont gérés avec brio sous Mercurial.
Hop,
Moi.