Contrairement à Git (Cf git rebase --interactive), Mercurial ne permet d'éditer directement l'historique). Tu as plusieurs façons de le faire
a) la méthode manuelle
Le principe est simple, tu veux combiner les changesets ]rev1, rev2] (note le sens des crochets
1. hg update rev1 # revenir à la révision 1 (index et répertoire de travail)
2. hg revert --all --rev rev2 # revenir à la révision 2 (répertoire de travail)
3. hg commit -m "combine rev1:rev2 changesets" # on commit l'ensemble des modifications en 1 changeset
L'inconvénient est que cette méthode crée une branche inutile (celle avec les commits non combinés), pour s'en débarrasser, soit tu clones le dépôt ou bien utiliser la commande strip fourni par l'extension mq.
b) la méthode mq
À peine plus compliqué que la précédente et beaucoup plus propre.
On suppose que tu as activé l'extension mq et initialiser le support dans le dépôt local
1. hg qimport rev1:rev2 # on confie à mq la gestion des changesets de rev1 à rev2
2. hg qgoto qbase # on applique le premier patch
3. hg qfold `hg qunapplied` # on combine tout les patchs non appliqués au dépôt, l'avantage c'est que tout les messages de commits sont concaténés
4. hg qfinish qbase # on repasse la gestion des changesets à mercurial
MQ est un peu le couteau suisse de mercurial (ça fait partie partie des outils à connaitre), il permet la gestion avancées de patchs comme Quilt, l'édition de l'historique, etc ... La différence avec la méthode précédente est qu'il n'y a rien qui traine dans le dépôt. http://mercurial.selenic.com/wiki/MqExtension
c) histedit
Une extension non inclus en standard dédié à l'édition de l'historique (à la manière de git rebase --interactive). Je n'ai jamais utilisé cette extension celà dit, donc je me contenterais de signaler son existence. http://mercurial.selenic.com/wiki/HisteditExtension
# Edition de l'historique
Posté par GeneralZod . En réponse au message Hg et SVN: concaténer changesets en un seul commit. Évalué à 5.
a) la méthode manuelle
Le principe est simple, tu veux combiner les changesets ]rev1, rev2] (note le sens des crochets
1. hg update rev1 # revenir à la révision 1 (index et répertoire de travail)
2. hg revert --all --rev rev2 # revenir à la révision 2 (répertoire de travail)
3. hg commit -m "combine rev1:rev2 changesets" # on commit l'ensemble des modifications en 1 changeset
L'inconvénient est que cette méthode crée une branche inutile (celle avec les commits non combinés), pour s'en débarrasser, soit tu clones le dépôt ou bien utiliser la commande strip fourni par l'extension mq.
b) la méthode mq
À peine plus compliqué que la précédente et beaucoup plus propre.
On suppose que tu as activé l'extension mq et initialiser le support dans le dépôt local
1. hg qimport rev1:rev2 # on confie à mq la gestion des changesets de rev1 à rev2
2. hg qgoto qbase # on applique le premier patch
3. hg qfold `hg qunapplied` # on combine tout les patchs non appliqués au dépôt, l'avantage c'est que tout les messages de commits sont concaténés
4. hg qfinish qbase # on repasse la gestion des changesets à mercurial
MQ est un peu le couteau suisse de mercurial (ça fait partie partie des outils à connaitre), il permet la gestion avancées de patchs comme Quilt, l'édition de l'historique, etc ... La différence avec la méthode précédente est qu'il n'y a rien qui traine dans le dépôt.
http://mercurial.selenic.com/wiki/MqExtension
c) histedit
Une extension non inclus en standard dédié à l'édition de l'historique (à la manière de git rebase --interactive). Je n'ai jamais utilisé cette extension celà dit, donc je me contenterais de signaler son existence.
http://mercurial.selenic.com/wiki/HisteditExtension