slitaz-doc-wiki-data view pages/fr/cookbook/advancedhg.txt @ rev 4

Add pages/fr folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Sat Feb 26 12:13:35 2011 +0000 (2011-02-26)
parents
children b8e0b134ba24
line source
1 ====== Utilisation avancée de Mercurial ======
3 ==== Utiliser un outil externe pour joindre (merge) ====
5 Si vous utilisez les outils présentés sur cette page, particulièrement MQ, avoir un outil pour gérer les jointures (lorsque plusieurs modifications se chevauchent et qu'il faut définir le résultat à la main) vous sera probablement utile. SliTaz propose Meld, un logiciel léger qui remplit bien cette fonction. Après installation, indiquer à Mercurial de l'utiliser si nécéssaire en ajoutant dans ~/.hgrc:
7 <code>
8 [ui]
9 merge = meld
10 </code>
12 ==== Extensions utiles ====
14 Pour ajouter une extension, il est possible d'utiliser le fichier ~/.hgrc; La syntaxe est:
16 <code>
17 [extensions]
18 nom = adresse
19 </code>
20 Certaines extensions sont fournies avec Mercurial et il n'est donc pas nécéssaire de donner leur adresse. C'est le cas des quatre suivantes:
22 **color**
23 Ajoute la couleur dans Mercurial. Utile quand on affiche les différences entre différentes versions d'un fichier.
25 **hgext.fetch**
26 Ajoute la commande hg fetch, qui regroupe hg pull && hg merge && hg update.
28 **hgext.graphlog**
29 Ajoute la commande glog qui afficher l'arbre des révisions avec le log; Il est conseillé de limité la longueur du log avec l'option -l (ex. -l 10). L'option -p permet d'afficher le détails des différences introduites à chaque étape.
31 **mq**
32 Cet outils est expliqué plus en détail ci-dessous. Il permet de gérer une liste de patch pour un dépôt Mercurial: les appliquer, retirer, mettre à jour, etc. Cette extension ajoute plusieurs commandes, qui commencent généralement par 'q'.
33 Plusieurs pages web détaillent cet outils, rechercher: mercurial mq
36 ==== Fonctions MQ de base ====
37 Dans un dépôt Mercurial, créer un dépôt de patch avec contrôle des révision; C'est un dépôt de patch dont les changements peuvent être enregistrés via Mercurial, comme un dépôt dans le dépôt:
38 <code>hg qinit -c</code>
40 Après avoir procédé à des modifications, les enregistrer en tant que patch plutôt que les commiter:
41 <code>hg qnew nom_du_patch</code>
43 Voir les patches appliqués/non-appliqués:
44 <code>hg qseries -v</code>
46 Ajouter des modifications au patch en cours d'utilisation (le dernier appliqué):
47 <code>hg qrefresh</code>
49 Appliquer le patch suivant de la file:
50 <code>hg qpush</code>
52 Appliquer tous les patchs:
53 <code>hg qpush -a</code>
55 Dé-appliquer le patch courant:
56 <code>hg qpop</code>
58 Dé-appliquer tous les patchs:
59 <code>hg qpop -a</code>
61 Aller à un patch précis dans la file:
62 <code>hg qgoto patch</code>
64 Ajouter un message au patch courant (en vue de le commiter):
65 <code>hg qrefresh -m "Message"</code>
67 Transformer un patch en commit:
68 <code>hg qfinish patch</code>
70 Commiter les changements effectués dans le dépôt de patchs:
71 <code>hg qcommit -m "Message de commit"</code>
73 Not : Les patchs sont enregistrés dans .hg/patches. Le fichier .hg/patches/series peut être modifié manuellement pour changer l'ordre d'application des patchs; Attention cependant si plusieurs patchs modifient un même fichier: cela peut créer des problèmes.
75 ==== MQ & Jointure ====
77 **Principe général**
79 Les patchs peuvent être mis à jour en utilisant l'outil merge de Mercurial: c'est plus facile que de les éditer manuellement. Pour cela, il est nécéssaire d'avoir deux têtes (heads) dans le dépot. L'une étant le dépôt avec les patchs appliqués; l'autre le dépôt avec les nouveaux commits/update/etc:
81 <code>
82 o Nouvelle version du dépôt
83 |
84 |
85 | o Patchs
86 | |
87 | /
88 |
89 o Dépôt avant application des patchs
90 </code>
92 La branche patchs sera ensuite jointe à la nouvelle branche, et MQ tirera utilisera la fonction merge de Mercurial pour mettre à jour les patchs. Notez que l'utilisation d'un outils externe pour gérer les jointures problématiques (comme Meld proposé au-dessus) est hautement recommandée.
94 Créer la tête patchs:
95 <code>
96 qpush -a
97 hg tags # Retenir/Noter le numéro de révision de qparent
98 qsave -e -c #Sauvegarder l'état des patchs, cette sauvegarde sera utilisée durant l'opération merge. (Retenir/Noter le numéro à la fin de patches.N; généralement c'est 1)
99 </code>
101 Créer la nouvelle tête:
102 <code>
103 hg update -C <N°qparent> # Aller à la révision notée ci-dessus
105 # Ensuite, selon ce que vous voulez faire:
106 # Mettre à jour:
107 hg pull -u
108 # Commiter des changements, modifier puis:
109 hg commit -m "message"
110 # Modifier un patch:
111 hg qgoto patch # Puis modifier les fichiers et:
112 hg qrefresh</code>
114 Pour lancer l'opération de merge:
115 <code>hg qpush -a -m</code>
117 Nettoyer le dépôt:
118 <code>
119 hg qpop -a
120 hg qpop -a -n patches.N
121 rm -r .hg/patches.N
122 </code>
124 Enregistrer les changements dans le dépôt de patchs:
125 <code>hg qcommit -m "Mise à jour pour rev???"</code>
127 Ré-appliquer la série de patch:
128 <code>hg qpush -a</code>