slitaz-doc-wiki-data annotate 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
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@4 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:
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>