rev |
line source |
slaxemulator@4
|
1 ====== Utilisation avancée de Mercurial ======
|
slaxemulator@4
|
2
|
slaxemulator@4
|
3 ==== Utiliser un outil externe pour joindre (merge) ====
|
slaxemulator@4
|
4
|
slaxemulator@4
|
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:
|
slaxemulator@4
|
6
|
slaxemulator@4
|
7 <code>
|
slaxemulator@4
|
8 [ui]
|
slaxemulator@4
|
9 merge = meld
|
slaxemulator@4
|
10 </code>
|
slaxemulator@4
|
11
|
slaxemulator@4
|
12 ==== Extensions utiles ====
|
slaxemulator@4
|
13
|
slaxemulator@4
|
14 Pour ajouter une extension, il est possible d'utiliser le fichier ~/.hgrc; La syntaxe est:
|
slaxemulator@4
|
15
|
slaxemulator@4
|
16 <code>
|
slaxemulator@4
|
17 [extensions]
|
slaxemulator@4
|
18 nom = adresse
|
slaxemulator@4
|
19 </code>
|
slaxemulator@4
|
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:
|
slaxemulator@4
|
21
|
slaxemulator@4
|
22 **color**
|
slaxemulator@4
|
23 Ajoute la couleur dans Mercurial. Utile quand on affiche les différences entre différentes versions d'un fichier.
|
slaxemulator@4
|
24
|
slaxemulator@4
|
25 **hgext.fetch**
|
slaxemulator@4
|
26 Ajoute la commande hg fetch, qui regroupe hg pull && hg merge && hg update.
|
slaxemulator@4
|
27
|
slaxemulator@4
|
28 **hgext.graphlog**
|
slaxemulator@4
|
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.
|
slaxemulator@4
|
30
|
slaxemulator@4
|
31 **mq**
|
slaxemulator@4
|
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'.
|
slaxemulator@4
|
33 Plusieurs pages web détaillent cet outils, rechercher: mercurial mq
|
slaxemulator@4
|
34
|
slaxemulator@4
|
35
|
slaxemulator@4
|
36 ==== Fonctions MQ de base ====
|
slaxemulator@4
|
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:
|
slaxemulator@4
|
38 <code>hg qinit -c</code>
|
slaxemulator@4
|
39
|
slaxemulator@4
|
40 Après avoir procédé à des modifications, les enregistrer en tant que patch plutôt que les commiter:
|
slaxemulator@4
|
41 <code>hg qnew nom_du_patch</code>
|
slaxemulator@4
|
42
|
slaxemulator@4
|
43 Voir les patches appliqués/non-appliqués:
|
slaxemulator@4
|
44 <code>hg qseries -v</code>
|
slaxemulator@4
|
45
|
slaxemulator@4
|
46 Ajouter des modifications au patch en cours d'utilisation (le dernier appliqué):
|
slaxemulator@4
|
47 <code>hg qrefresh</code>
|
slaxemulator@4
|
48
|
slaxemulator@4
|
49 Appliquer le patch suivant de la file:
|
slaxemulator@4
|
50 <code>hg qpush</code>
|
slaxemulator@4
|
51
|
slaxemulator@4
|
52 Appliquer tous les patchs:
|
slaxemulator@4
|
53 <code>hg qpush -a</code>
|
slaxemulator@4
|
54
|
slaxemulator@4
|
55 Dé-appliquer le patch courant:
|
slaxemulator@4
|
56 <code>hg qpop</code>
|
slaxemulator@4
|
57
|
slaxemulator@4
|
58 Dé-appliquer tous les patchs:
|
slaxemulator@4
|
59 <code>hg qpop -a</code>
|
slaxemulator@4
|
60
|
slaxemulator@4
|
61 Aller à un patch précis dans la file:
|
slaxemulator@4
|
62 <code>hg qgoto patch</code>
|
slaxemulator@4
|
63
|
slaxemulator@4
|
64 Ajouter un message au patch courant (en vue de le commiter):
|
slaxemulator@4
|
65 <code>hg qrefresh -m "Message"</code>
|
slaxemulator@4
|
66
|
slaxemulator@4
|
67 Transformer un patch en commit:
|
slaxemulator@4
|
68 <code>hg qfinish patch</code>
|
slaxemulator@4
|
69
|
slaxemulator@4
|
70 Commiter les changements effectués dans le dépôt de patchs:
|
slaxemulator@4
|
71 <code>hg qcommit -m "Message de commit"</code>
|
slaxemulator@4
|
72
|
slaxemulator@4
|
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.
|
slaxemulator@4
|
74
|
slaxemulator@4
|
75 ==== MQ & Jointure ====
|
slaxemulator@4
|
76
|
slaxemulator@4
|
77 **Principe général**
|
slaxemulator@4
|
78
|
slaxemulator@44
|
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/updates/etc:
|
slaxemulator@4
|
80
|
slaxemulator@4
|
81 <code>
|
slaxemulator@4
|
82 o Nouvelle version du dépôt
|
slaxemulator@4
|
83 |
|
slaxemulator@4
|
84 |
|
slaxemulator@4
|
85 | o Patchs
|
slaxemulator@4
|
86 | |
|
slaxemulator@4
|
87 | /
|
slaxemulator@4
|
88 |
|
slaxemulator@4
|
89 o Dépôt avant application des patchs
|
slaxemulator@4
|
90 </code>
|
slaxemulator@4
|
91
|
slaxemulator@4
|
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.
|
slaxemulator@4
|
93
|
slaxemulator@4
|
94 Créer la tête patchs:
|
slaxemulator@4
|
95 <code>
|
slaxemulator@4
|
96 qpush -a
|
slaxemulator@4
|
97 hg tags # Retenir/Noter le numéro de révision de qparent
|
slaxemulator@4
|
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)
|
slaxemulator@4
|
99 </code>
|
slaxemulator@4
|
100
|
slaxemulator@4
|
101 Créer la nouvelle tête:
|
slaxemulator@4
|
102 <code>
|
slaxemulator@4
|
103 hg update -C <N°qparent> # Aller à la révision notée ci-dessus
|
slaxemulator@4
|
104
|
slaxemulator@4
|
105 # Ensuite, selon ce que vous voulez faire:
|
slaxemulator@4
|
106 # Mettre à jour:
|
slaxemulator@4
|
107 hg pull -u
|
slaxemulator@4
|
108 # Commiter des changements, modifier puis:
|
slaxemulator@4
|
109 hg commit -m "message"
|
slaxemulator@4
|
110 # Modifier un patch:
|
slaxemulator@4
|
111 hg qgoto patch # Puis modifier les fichiers et:
|
slaxemulator@4
|
112 hg qrefresh</code>
|
slaxemulator@4
|
113
|
slaxemulator@4
|
114 Pour lancer l'opération de merge:
|
slaxemulator@4
|
115 <code>hg qpush -a -m</code>
|
slaxemulator@4
|
116
|
slaxemulator@4
|
117 Nettoyer le dépôt:
|
slaxemulator@4
|
118 <code>
|
slaxemulator@4
|
119 hg qpop -a
|
slaxemulator@4
|
120 hg qpop -a -n patches.N
|
slaxemulator@4
|
121 rm -r .hg/patches.N
|
slaxemulator@4
|
122 </code>
|
slaxemulator@4
|
123
|
slaxemulator@4
|
124 Enregistrer les changements dans le dépôt de patchs:
|
slaxemulator@4
|
125 <code>hg qcommit -m "Mise à jour pour rev???"</code>
|
slaxemulator@4
|
126
|
slaxemulator@4
|
127 Ré-appliquer la série de patch:
|
slaxemulator@4
|
128 <code>hg qpush -a</code>
|