Size: 4684
Comment:
|
Size: 4751
Comment: changing some links for pointing on translated pages + some improvements
|
Deletions are marked like this. | Additions are marked like this. |
Line 7: | Line 7: |
Annule les effets du précédent [[ChangeSet|changeset]]. | Annule les effets du précédent [[FrenchChangeSet|changeset]]. |
Line 9: | Line 9: |
Backout fonctionne en appliquant les modifications inverses à celles du dernier changeset. Ce nouveau changeset est envoyé (commit) au [[Repository|dépôt]] et éventuellement fusionné (merge). | Backout fonctionne en appliquant les modifications inverses à celles du dernier changeset. Ce nouveau changeset est validé (commit) au [[FrenchRepository|dépôt]] et éventuellement fusionné (merge). |
Line 14: | Line 14: |
==== Voici quelques détails supplémentaires de Matt sur le fonctionnement interne (légèrement adapté, par expérience) ==== | ==== Voici quelques explications complémentaires de Matt sur le fonctionnement interne (légèrement adapté, par expérience) ==== |
Line 24: | Line 24: |
5.#5 `hg merge ` (fusionne <rev de départ> avec la révision nouvellement envoyée à l'étape 3.) | 5.#5 `hg merge ` (fusionne <rev de départ> avec la révision nouvellement validée à l'étape 3.) |
Line 150: | Line 150: |
Voir aussi : [[Update]], [[Revert]], [[Commit]], [[Merge]] | Voir aussi : [[FrenchUpdate|Update]], [[FrenchRevert|Revert]], [[FrenchCommit|Commit]], [[FrenchMerge|Merge]] |
(Traduction du texte original en anglais : Backout)
Backout
hg backout [OPTION]... [-r] REV
Annule les effets du précédent changeset.
Backout fonctionne en appliquant les modifications inverses à celles du dernier changeset. Ce nouveau changeset est validé (commit) au dépôt et éventuellement fusionné (merge).
Référence manuel : http://www.selenic.com/mercurial/hg.1.html#backout
0.1. Voici quelques explications complémentaires de Matt sur le fonctionnement interne (légèrement adapté, par expérience)
(voir aussi ce fil de discussion e-mail)
Soit <rev de départ> la révision à laquelle nous allons faire un backout.
Backout est en fait la compilation de quatre étapes en une :
hg update -C -r <rev-pour-le-backout>
hg revert --all -r <parent de rev-pour-le-backout>
hg commit
hg update -C -r <rev de départ>
Il y a une cinquième étape qui se fait automatiquement si vous utilisez l'option --merge :
hg merge (fusionne <rev de départ> avec la révision nouvellement validée à l'étape 3.)
Ainsi qu'une sixième étape, manuelle celle-là :
hg commit (le resultat de la fusion)
Lorsque l'étape 3 (commit) avorte, vous vous retrouvez avec les deux premières étapes terminées et vous pouvez faire :
hg commit et résoudre par vous même les problème, et / ou
hg update -C pour abandonner le processus
L'étape 4 permet de s'assurer que les changesets parents sont fusionnés dans le bon ordre. C'est à dire : parent1 = <rev de départ>, et parent2 = <la nouvelle rev backout>.
0.2. Un exemple:
$ hg init depot $ cd depot $ echo ligne1 > fichier.txt $ echo ligne2 >> fichier.txt $ hg ci -Am "ajout de fichier"
Editons file.txt, pour obtenir :
ligne1 ligne1a ligne2
On commit et on fait quelques modifications :
$ hg ci -m "ajout ligne1a" $ echo ligne3 >> fichier.txt $ hg ci -m "ajout ligne3" $ echo ligne4 >> fichier.txt $ hg ci -m "ajout ligne4"
Ce qui produit l'arbre suivant (un brin raccourci) :
@ changeset: 3:36b1c0649d3e | tag: tip | summary: ajout ligne4 | o changeset: 2:2612107e45fe | summary: ajout ligne3 | o changeset: 1:1f33c361852e | summary: ajout ligne1a | o changeset: 0:e3e45b087239 summary: ajout de fichier
Maintenant on fait un backout sur le changeset 1:1f33c361852e.
$ hg backout -r 1
L'arbre est désormais :
o changeset: 4:c3daad6d657d | tag: tip | parent: 1:1f33c361852e | summary: Backed out changeset 1f33c361852e | | @ changeset: 3:36b1c0649d3e | | summary: ajout ligne4 | | | o changeset: 2:2612107e45fe |/ summary: ajout ligne3 | o changeset: 1:1f33c361852e | summary: ajout ligne1a | o changeset: 0:e3e45b087239 summary: ajout de fichier
On fusionne et commit, ce qui donne l'arbre final :
@ changeset: 5:236d8d74edf8 |\ tag: tip | | parent: 3:36b1c0649d3e | | parent: 4:c3daad6d657d | | summary: merge backout | | | o changeset: 4:c3daad6d657d | | parent: 1:1f33c361852e | | summary: Backed out changeset 1f33c361852e | | o | changeset: 3:36b1c0649d3e | | summary: ajout ligne4 | | o | changeset: 2:2612107e45fe |/ summary: ajout ligne3 | o changeset: 1:1f33c361852e | summary: ajout ligne1a | o changeset: 0:e3e45b087239 summary: ajout de fichier
Et fichier.txt est comme suit, s'étant vu joliment éliminé la 'ligne1a' de la rev 1.
ligne1 ligne2 ligne3 ligne4
Quand on essaie cela en séparant les étapes, et qu'on oublie l'étape 4, on obtient un arbre légèrement différent. Notez l'ordre inversé des parents dans le changeset 5:0eeac5ff9c76.
@ changeset: 5:0eeac5ff9c76 |\ tag: tip | | parent: 4:cbca219e80e1 | <--- | | parent: 3:f82e9468d652 | | | summary: merge backout | | | o changeset: 4:cbca219e80e1 | | parent: 1:0cf85b44002c | | summary: Backed out changeset 0cf85b44002c | | o | changeset: 3:f82e9468d652 | | summary: ajout ligne4 | | o | changeset: 2:24ceac6b9018 |/ summary: ajout ligne3 | o changeset: 1:0cf85b44002c | summary: ajout ligne1a | o changeset: 0:73af1be51d81 summary: ajout de fichier
Voir aussi : Update, Revert, Commit, Merge