hgbook
annotate fr/ch02-tour-basic.xml @ 1114:527b86d55d4a
inotify: update installation information
inotify is shipped in Mercurial since 1.0, which greatly simplifies the installation process
inotify is shipped in Mercurial since 1.0, which greatly simplifies the installation process
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Sun Dec 13 16:35:56 2009 +0900 (2009-12-13) |
parents | 53dfddc566d8 |
children |
rev | line source |
---|---|
belaran@964 | 1 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : --> |
belaran@964 | 2 |
belaran@973 | 3 <chapter id="chap:tour-basic"> |
belaran@973 | 4 <?dbhtml filename="a-tour-of-mercurial-the-basics.html"?> |
belaran@973 | 5 <title>Une rapide présentation de Mercurial : les bases</title> |
belaran@973 | 6 |
belaran@973 | 7 <sect1> |
belaran@973 | 8 <title>Installer Mercurial sur votre système</title> |
belaran@973 | 9 |
youshe@983 | 10 <para id="x_1">Des paquetages binaires de Mercurial sont disponibles pour la |
youshe@983 | 11 plupart des systèmes d'exploitation, ce qui rend facile l'utilisation |
youshe@983 | 12 immédiate de Mercurial sur votre ordinateur.</para> |
belaran@964 | 13 |
belaran@973 | 14 <sect2> |
belaran@973 | 15 <title>Windows</title> |
belaran@973 | 16 |
wilk@1005 | 17 <para id="x_c">La meilleure version de Mercurial pour Windows est |
youshe@983 | 18 TortoiseHg, qui peut être téléchargée ici : <ulink |
youshe@983 | 19 url="http://bitbucket.org/tortoisehg/stable/wiki/Home">http://bitbucket.org/tortoisehg/stable/wiki/Home</ulink>. |
andre@1015 | 20 Ce logiciel n'a aucune dépendance exterieure ; il fonctionne <quote>et |
youshe@983 | 21 c'est tout</quote>. Il fournit aussi bien les outils en ligne de |
youshe@983 | 22 commmande qu'une interface graphique.</para> |
youshe@983 | 23 |
youshe@983 | 24 </sect2> |
youshe@983 | 25 |
youshe@983 | 26 <sect2> |
youshe@983 | 27 <title>Mac OS X</title> |
youshe@983 | 28 |
youshe@983 | 29 <para id="x_a">Lee Cantey publie un installeur de Mercurial pour Mac OS |
youshe@983 | 30 X sur <ulink |
youshe@983 | 31 url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>.</para> |
youshe@983 | 32 </sect2> |
youshe@983 | 33 |
youshe@983 | 34 <sect2> |
youshe@983 | 35 <title>Linux</title> |
youshe@983 | 36 |
youshe@983 | 37 <para id="x_2">Parce que chaque distribution de Linux a ses propres |
youshe@983 | 38 outils de gestion de paquets, politiques et rythmes de |
youshe@983 | 39 développements, il est difficile de donner un ensemble |
youshe@983 | 40 d'instructions unique pour installer les binaires de Mercurial. La |
youshe@983 | 41 version de Mercurial avec laquelle vous vous retrouverez dépendra |
youshe@983 | 42 grandement de l'activité de la personne en charge du paquetage pour |
youshe@983 | 43 la distribution.</para> |
youshe@983 | 44 |
youshe@983 | 45 <para id="x_3">Pour rester simple, je me concentrerai sur |
youshe@983 | 46 l'installation de Mercurial en ligne de commande, sous les |
youshe@983 | 47 distributions les plus courantes. La plupart des distributions |
youshe@983 | 48 fournissent des gestionnaires graphiques de paquetage qui vous |
youshe@983 | 49 permettront d'installer Mercurial en quelques clicks. Le paquetage |
youshe@983 | 50 devrait se nommer <literal>mercurial</literal>.</para> |
youshe@983 | 51 |
youshe@983 | 52 <itemizedlist> |
andre@1015 | 53 <listitem><para id="x_4">Ubuntu et Debian :</para> |
belaran@997 | 54 <programlisting>apt-get install mercurial</programlisting></listitem> |
andre@1015 | 55 <listitem><para id="x_5">Fedora :</para> |
belaran@997 | 56 <programlisting>yum install mercurial</programlisting></listitem> |
andre@1015 | 57 <listitem><para id="x_6">Gentoo :</para> |
youshe@983 | 58 <programlisting>emerge mercurial</programlisting></listitem> |
andre@1015 | 59 <listitem><para id="x_715">OpenSUSE :</para> |
belaran@997 | 60 <programlisting>zypper install |
belaran@997 | 61 mercurial</programlisting></listitem> |
youshe@983 | 62 </itemizedlist> |
youshe@983 | 63 |
youshe@983 | 64 </sect2> |
youshe@983 | 65 <sect2> |
youshe@983 | 66 <title>Solaris</title> |
youshe@983 | 67 |
youshe@983 | 68 <para id="x_09">SunFreeWare, à <ulink |
youshe@983 | 69 url="http://www.sunfreeware.com">http://www.sunfreeware.com</ulink>, |
youshe@983 | 70 fournit des paquets précompilés pour Mercurial.</para> |
youshe@983 | 71 </sect2> |
youshe@983 | 72 </sect1> |
belaran@973 | 73 |
belaran@973 | 74 <sect1> |
belaran@973 | 75 <title>Commencer à utiliser Mercurial</title> |
belaran@973 | 76 |
youshe@983 | 77 <para id="x_e">Pour commencer, nous utiliserons la commande <command |
youshe@983 | 78 role="hg-cmd">hg version</command> pour vérifier si Mercurial est |
andre@1015 | 79 installé proprement. L'information de version affichée n'est |
andre@1015 | 80 pas réellement importante en soi, c'est surtout de savoir si elles |
youshe@983 | 81 s'affichent qui nous intéresse.</para> |
youshe@983 | 82 |
youshe@983 | 83 &interaction.tour.version; |
youshe@983 | 84 |
youshe@983 | 85 <sect2> |
youshe@983 | 86 <title>L'aide intégrée</title> |
youshe@983 | 87 |
belaran@997 | 88 <para id="x_f">Mercurial fournit un système d'aide intégré, ce qui est |
youshe@983 | 89 inestimable quand vous vous retrouvez coincé à essayer de vous |
youshe@983 | 90 rappeler comment lancer une commande. Si vous êtes bloqué, exécutez |
andre@1015 | 91 simplement <command role="hg-cmd">hg help</command> ; elle affichera |
youshe@983 | 92 une brève liste des commandes, avec une description pour chacune. Si |
youshe@983 | 93 vous demandez de l'aide sur une commande spécifique (voir |
youshe@983 | 94 ci-dessous), elle affichera des informations plus détaillées.</para> |
youshe@983 | 95 |
youshe@983 | 96 &interaction.tour.help; |
youshe@983 | 97 |
youshe@983 | 98 <para id="x_10">Pour un niveau d'informations encore plus détaillé |
wilk@1005 | 99 (ce dont vous aurez rarement besoin), exécutez <command role="hg-cmd">hg |
belaran@973 | 100 help <option role="hg-opt-global">-v</option></command>. L'option |
belaran@973 | 101 <option role="hg-opt-global">-v</option> est l'abréviation de |
belaran@973 | 102 <option role="hg-opt-global">--verbose</option>, et indique à Mercurial |
wilk@1005 | 103 d'afficher plus d'informations que d'habitude.</para> |
belaran@973 | 104 |
belaran@973 | 105 </sect2> |
belaran@973 | 106 </sect1> |
belaran@973 | 107 <sect1> |
belaran@973 | 108 <title>Travailler avec un dépôt</title> |
belaran@973 | 109 |
wilk@1005 | 110 <para id="x_11">Avec Mercurial, tout se déroule au sein d'un |
belaran@973 | 111 <emphasis>dépôt</emphasis>. Le dépôt d'un projet contient tous |
belaran@973 | 112 les fichiers qui <quote>appartiennent</quote> au projet.</para> |
belaran@973 | 113 |
belaran@973 | 114 <para id="x_12">Il n'y a rien de particulièrement magique au sujet de |
belaran@973 | 115 ce dépôt, c'est simplement une arborescence sur votre système de fichiers |
youshe@983 | 116 que Mercurial traite de manière spéciale. Vous pouvez renommer ou effacer |
andre@1015 | 117 ce répertoire à n'importe quel moment, en utilisant la ligne de commande |
belaran@973 | 118 ou votre explorateur de fichiers.</para> |
belaran@973 | 119 |
belaran@973 | 120 <sect2> |
belaran@973 | 121 <title>Faire une copie locale de votre dépôt</title> |
belaran@973 | 122 |
belaran@973 | 123 <para id="x_13"><emphasis>Copier</emphasis> un dépôt est juste un |
belaran@973 | 124 peu spécial. Bien que vous puissiez utiliser une commande habituelle de |
belaran@973 | 125 copie pour copier votre dépôt, il vaut mieux utiliser une commande fournie par |
belaran@973 | 126 Mercurial. Cette commande est appelée <command role="hg-cmd">hg clone</command>, |
belaran@973 | 127 car elle crée une copie identique à un dépôt existant.</para> |
belaran@973 | 128 |
youshe@983 | 129 &interaction.tour.clone; |
youshe@983 | 130 |
youshe@983 | 131 <para id="x_67c">Un avantage de la commande <command role="hg-cmd">hg |
youshe@983 | 132 clone</command> est que, comme nous l'avons vu ci dessus, elle nous |
wilk@1005 | 133 permet de cloner les dépôts à travers le réseau. Un autre |
youshe@983 | 134 est qu'elle se rappelle d'où a été cloné un dépôt, ce qui est utile |
youshe@983 | 135 quand on veut mettre à jour le clone.</para> |
youshe@983 | 136 |
youshe@983 | 137 <para id="x_14">Si votre opération de clonage réussit, vous devriez maintenant |
belaran@973 | 138 avoir un répertoire local appelé <filename class="directory">hello</filename>. |
belaran@973 | 139 Ce répertoire contiendra quelques fichiers.</para> |
belaran@973 | 140 |
youshe@983 | 141 &interaction.tour.ls; |
youshe@983 | 142 |
youshe@983 | 143 <para id="x_15">Ces fichiers ont le même contenu et historique dans votre dépôt |
youshe@983 | 144 qu'ils ont dans le dépôt que vous avez cloné.</para> |
youshe@983 | 145 |
youshe@983 | 146 <para id="x_16">Chaque dépôt Mercurial est complet, autonome et |
youshe@983 | 147 indépendant. Il contient sa propre copie privée des fichiers du |
youshe@983 | 148 projet et de leur historique. Le clone d'un dépôt se souvient de la |
andre@1015 | 149 localisation du dépôt à partir duquel il a été cloné, mais il ne |
youshe@983 | 150 communique pas avec ce dernier, ou un autre, à moins que vous ne lui |
youshe@983 | 151 demandiez.</para> |
youshe@983 | 152 |
andre@1015 | 153 <para id="x_17">Tout ceci signifie pour le moment que nous |
youshe@983 | 154 sommes libres d'expérimenter avec ce dépôt, confiants dans le fait |
youshe@983 | 155 qu'il s'agit d'un <quote>bac à sable</quote> qui n'affectera personne |
youshe@983 | 156 d'autre.</para> |
belaran@973 | 157 |
belaran@973 | 158 </sect2> |
belaran@973 | 159 <sect2> |
belaran@973 | 160 <title>Quel est le contenu d'un dépôt ?</title> |
belaran@973 | 161 |
belaran@973 | 162 <para id="x_18">Prêtons plus attention un instant au contenu d'un dépôt. |
belaran@973 | 163 Nous voyons qu'il contient un répertoire nommé <filename class="directory">.hg |
belaran@973 | 164 </filename>. C'est ici que Mercurial conserve toutes ses |
belaran@973 | 165 métadonnées.</para> |
belaran@973 | 166 |
youshe@983 | 167 &interaction.tour.ls-a; |
belaran@973 | 168 |
belaran@973 | 169 <para id="x_19">Le contenu du répertoire <filename class="directory">.hg |
andre@1015 | 170 </filename> et ses sous-répertoires sont les seuls propres à Mercurial. |
belaran@973 | 171 Tous les autres fichiers et répertoires dans le dépôt sont à vous, et |
belaran@973 | 172 vous pouvez en faire ce que vous voulez.</para> |
belaran@973 | 173 |
belaran@973 | 174 <para id="x_1a">Pour introduire un peu de terminologie, le répertoire |
belaran@973 | 175 <filename class="directory">.hg</filename> est un <quote>vrai</quote> |
belaran@973 | 176 dépôt, et tous les fichiers et les répertoires qui coexistent avec lui, |
belaran@973 | 177 sont désignés sous le nom <emphasis>espace de travail</emphasis>. Une |
belaran@973 | 178 manière facile de se rappeler cette distinction est de retenir que le |
belaran@973 | 179 <emphasis>dépôt</emphasis> contient l'<emphasis>historique</emphasis> |
belaran@973 | 180 de votre projet, alors que l'<emphasis>espace de travail</emphasis> |
belaran@973 | 181 contient un "<emphasis>snapshot</emphasis>" de votre projet à un certain |
belaran@973 | 182 point de son historique.</para> |
belaran@973 | 183 |
belaran@973 | 184 </sect2> |
belaran@973 | 185 </sect1> |
belaran@973 | 186 <sect1> |
belaran@973 | 187 <title>Une promenade dans l'historique</title> |
belaran@973 | 188 |
belaran@973 | 189 <para id="x_1b">Une des premières choses que vous aurez envie |
belaran@973 | 190 de faire avec un nouveau dépôt, sera de comprendre son historique. |
belaran@973 | 191 La commande <command role="hg-cmd">hg log</command> vous donne une |
belaran@973 | 192 vue de l'historique.</para> |
belaran@973 | 193 |
youshe@983 | 194 &interaction.tour.log; |
belaran@973 | 195 |
belaran@997 | 196 <para id="x_1c">Par défaut, cette commande affiche à l'écran un bref paragraphe pour chaque |
belaran@973 | 197 révision enregistrée pour ce projet. Dans la terminologie de Mercurial, nous |
belaran@973 | 198 appelons chacun de ces évènements enregistrés un <emphasis>changeset</emphasis>, parce |
belaran@973 | 199 qu'il contient un ensemble de modifications sur plusieurs fichiers.</para> |
belaran@973 | 200 |
belaran@973 | 201 <para id="x_1d">La commande <command role="hg-cmd">hg log</command> affiche |
youshe@983 | 202 ainsi ces informations :</para> |
belaran@973 | 203 |
belaran@973 | 204 <itemizedlist> |
youshe@983 | 205 <listitem><para id="x_1e"><literal>changeset</literal> : Ce champ contient |
belaran@973 | 206 un nombre, séparé par deux points (:), d'une chaine hexadécimale. Il |
wilk@1005 | 207 s'agit en fait d'<emphasis>identifiants</emphasis> d'un <quote>changeset</quote>. Il y a |
wilk@1005 | 208 deux identifiants car le numéro de la révision est plus court et plus |
belaran@973 | 209 facile à saisir qu'une séquence hexadécimale.</para> |
belaran@973 | 210 </listitem> |
youshe@983 | 211 <listitem><para id="x_1f"><literal>user</literal> : L'identité de la personne |
wilk@1005 | 212 qui a créé ce <!--ntd %%% laisser le terme anglais car il sera affiché--> |
wilk@1005 | 213 <quote>changeset</quote>. C'est un champ libre de forme, mais la plupart du |
belaran@973 | 214 temps il contient le nom et l'email de la personne.</para> |
belaran@973 | 215 </listitem> |
youshe@983 | 216 <listitem><para id="x_20"><literal>date</literal> : La date et l'heure à |
wilk@1005 | 217 laquelle le <quote>changeset</quote> a été créé, ainsi que le fuseau horaire dans |
youshe@983 | 218 lequelle il a été créé. (La date et l'heure sont locales à ce |
wilk@1005 | 219 <quote>fuseau</quote>, elles indiquent donc quelle date et heure il était |
andre@1015 | 220 pour la personne qui a créé ce <quote>changeset</quote>.)</para> |
belaran@973 | 221 </listitem> |
andre@1015 | 222 <listitem><para id="x_21"><literal>summary</literal>: La première ligne du |
wilk@1005 | 223 message que le créateur a associé à son <quote>changeset</quote> pour le décrire.</para> |
belaran@973 | 224 </listitem> |
wilk@1005 | 225 <listitem><para id="x_67d">Certains <quote>changesets</quote>, comme le premier de la |
youshe@983 | 226 liste ci-dessus ont un champ <literal>tag</literal>. Le tag est une autre |
youshe@983 | 227 façon d'identifier un changeset en lui donnant un nom simple à retenir. |
youshe@983 | 228 (Le tag nommé <literal>tip</literal> est spécial : il fait toujours |
andre@1015 | 229 référence au dernier changement dans le dépôt.)</para></listitem> |
belaran@973 | 230 </itemizedlist> |
belaran@973 | 231 |
belaran@973 | 232 <para id="x_22">Par défaut, la commande <command role="hg-cmd">hg log</command> |
youshe@983 | 233 n'affiche qu'un résumé, il manque beaucoup de détails.</para> |
belaran@973 | 234 |
belaran@973 | 235 <para id="x_23">La figure <xref linkend="fig:tour-basic:history"/> fournit une |
belaran@973 | 236 représentation graphique de l'historique du dépôt <filename class="directory">hello |
wilk@1005 | 237 </filename>, pour voir plus facilement dans quelle direction |
belaran@973 | 238 l'historique se <quote>déroule</quote>. Nous reviendrons régulièrement |
belaran@973 | 239 sur cette représentation dans ce chapitre et ceux qui suivent.</para> |
belaran@973 | 240 |
belaran@973 | 241 |
belaran@973 | 242 <figure id="fig:tour-basic:history"> |
wilk@1005 | 243 <title>Historique graphique du dépôt <filename |
wilk@1005 | 244 class="directory">hello</filename></title> |
belaran@973 | 245 <mediaobject> |
belaran@973 | 246 <imageobject><imagedata fileref="figs/tour-history.png"/></imageobject> |
belaran@973 | 247 <textobject><phrase>XXX add text</phrase></textobject> |
belaran@973 | 248 </mediaobject> |
belaran@973 | 249 </figure> |
belaran@973 | 250 |
belaran@973 | 251 |
belaran@973 | 252 <sect2> |
belaran@973 | 253 <title>Changesets, révisions, et collaboration</title> |
belaran@973 | 254 |
youshe@983 | 255 <para id="x_25">Comme l'anglais est réputé pour être un langage maladroit, |
youshe@983 | 256 et que l'informatique est la source de bien des erreurs de terminologie |
youshe@983 | 257 (pourquoi utiliser un seul terme quand quatre feront l'affaire ?), la |
wilk@1005 | 258 gestion de révisions a une variété de mots et de phrases qui veulent dire |
youshe@983 | 259 la même chose. Si vous discutez d'historique de Mercurial avec d'autres |
youshe@983 | 260 personnes, vous constaterez que souvent, le mot <quote>changeset</quote> |
youshe@983 | 261 est contracté simplement en <quote>change</quote> ou (à l'écrit) |
wilk@1005 | 262 <quote>cset</quote>, et même parfois |
youshe@983 | 263 <quote>révision</quote>, abrégé en <quote>rev</quote>.</para> |
belaran@973 | 264 |
belaran@973 | 265 <para id="x_26">Bien que le <emphasis>mot</emphasis> que vous utilisez pour |
belaran@973 | 266 désigner le concept de changeset importe peu, l'<emphasis>identifiant</emphasis> |
belaran@973 | 267 que vous utilisez pour désigner un <emphasis>changeset</emphasis> spécifique |
wilk@1005 | 268 a une grande importance. Rappelez vous que le champ <quote>changeset</quote> affiché par la |
wilk@1005 | 269 commande <command role="hg-cmd">hg log</command> identifie un <quote>changeset</quote> à |
youshe@983 | 270 la fois avec un numéro de révision et une séquence hexadécimale.</para> |
belaran@973 | 271 |
belaran@973 | 272 <itemizedlist> |
belaran@973 | 273 <listitem><para id="x_27">Le numéro de révision est <emphasis>seulement |
belaran@973 | 274 valable dans ce dépôt</emphasis>,</para></listitem> |
belaran@973 | 275 <listitem><para id="x_28">La séquence hexadécimale est un |
belaran@973 | 276 <emphasis>identifiant permanent, et invariant</emphasis> qui |
wilk@1005 | 277 pourra toujours être associé au <quote>changeset</quote> exact de <emphasis>chaque</emphasis> |
belaran@973 | 278 copie de votre dépôt.</para></listitem></itemizedlist> |
belaran@973 | 279 |
youshe@983 | 280 <para id="x_29">La distinction est importante. Si vous envoyez un email |
youshe@983 | 281 à quelqu'un en parlant de la <quote>révision 33</quote>, il est très |
wilk@1005 | 282 probable que sa <quote>révision 33</quote> <emphasis>ne sera pas la même</emphasis> |
youshe@983 | 283 que la votre. La raison de ceci est que le numéro de révision dépend |
youshe@983 | 284 de l'ordre dans lequel les modifications sont arrivées dans le dépôt, |
youshe@983 | 285 et il n'y a aucune garantie que les mêmes changements soient arrivés |
youshe@983 | 286 dans le même ordre dans différents dépôts. Trois modifications |
wilk@1005 | 287 <literal>a, b, c</literal> peuvent aisément apparaitre dans un dépôt |
wilk@1005 | 288 comme <literal>0, 1, 2</literal>, et dans un autre comme <literal>0, 2, 1 |
youshe@983 | 289 </literal>.</para> |
youshe@983 | 290 |
youshe@983 | 291 <para id="x_2a">Mercurial utilise les numéros de révision uniquement comme des raccourcis |
wilk@1005 | 292 pratiques. Si vous devez discuter d'un <quote>changeset</quote> avec quelqu'un, |
wilk@1005 | 293 ou identifer un <quote>changeset</quote> pour une quelconque raison (par exemple, |
wilk@1005 | 294 un rapport de <quote>bug</quote>), utilisez la séquence hexadécimale.</para> |
belaran@973 | 295 |
belaran@973 | 296 </sect2> |
belaran@973 | 297 <sect2> |
belaran@973 | 298 <title>Afficher une révision spécifique</title> |
belaran@973 | 299 |
belaran@973 | 300 <para id="x_2b">Pour réduire la sortie de <command role="hg-cmd">hg log |
belaran@973 | 301 </command> à une seule révision, utilisez l'option <option role="hg-opt-log">-r |
belaran@973 | 302 </option> (ou <option role="hg-opt-log">--rev</option>). Vous pouvez utiliser |
belaran@973 | 303 le numéro de révision ou la séquence hexadécimale comme identifiant, et |
belaran@973 | 304 demander autant de révisions que vous le souhaitez.</para> |
belaran@973 | 305 |
belaran@973 | 306 &interaction.tour.log-r; |
belaran@973 | 307 |
youshe@983 | 308 <para id="x_2c">Si vous voulez voir l'historique de plusieurs révisions |
wilk@1005 | 309 sans avoir à les énumérer, vous pouvez utiliser un <emphasis>intervalle |
youshe@983 | 310 de numérotation</emphasis> qui vous permet d'exprimer l'idée <quote>je |
andre@1015 | 311 veux toutes les révisions entre <literal>abc</literal> et <literal>def</literal> |
andre@1015 | 312 inclus</quote>.</para> |
youshe@983 | 313 |
youshe@983 | 314 &interaction.tour.log.range; |
youshe@983 | 315 |
youshe@983 | 316 <para id="x_2d">Mercurial respecte aussi l'ordre dans lequel vous spécifiez |
youshe@983 | 317 les révisions, ainsi <command role="hg-cmd">hg log -r 2:4</command> |
wilk@1005 | 318 affichera <literal>2, 3, 4</literal> alors que <command role="hg-cmd">hg |
wilk@1005 | 319 log -r 4:2</command> affichera <literal>4, 3, 2</literal>.</para> |
belaran@973 | 320 |
belaran@973 | 321 </sect2> |
belaran@973 | 322 <sect2> |
belaran@973 | 323 <title>Informations détaillées</title> |
belaran@973 | 324 |
belaran@973 | 325 <para id="x_2e">Le résumé affiché par <command role="hg-cmd">hg log</command> |
belaran@973 | 326 est suffisant si vous savez déjà ce que vous cherchez. En |
belaran@973 | 327 revanche, vous aurez probablement besoin de voir une description |
belaran@973 | 328 complète du changement, ou une liste des fichiers modifiés si vous |
wilk@1005 | 329 cherchez à déterminer qu'un <quote>changeset</quote> est bien celui que vous |
wilk@1005 | 330 recherchez. L'option <option role="hg-opt-log">-v</option> de la commande <command role="hg-cmd">hg |
belaran@973 | 331 log</command> (ou <option role="hp-opt-global">--verbose</option>) vous |
belaran@973 | 332 donne ces informations supplémentaires.</para> |
belaran@973 | 333 |
youshe@983 | 334 &interaction.tour.log-v; |
belaran@973 | 335 |
belaran@973 | 336 <para id="x_2f">Si vous voulez voir à la fois la description |
wilk@1005 | 337 et le contenu d'une modification, ajoutez l'option <option |
belaran@973 | 338 role="hg-opt-log">-p</option> (ou <option role="hg-opt-log"> |
belaran@973 | 339 --patch</option>). Ceci affiche le contenu d'une modification |
belaran@973 | 340 comme un <emphasis>diff unifié</emphasis> |
belaran@973 | 341 <!-- \footnote{NdT: \textit{unified diff}} --> |
belaran@973 | 342 (si vous n'avez jamais vu de diff unifié avant, consultez la |
belaran@973 | 343 section <xref linkend="sec:mq:patch"/> pour un rapide |
belaran@973 | 344 survol).</para> |
belaran@973 | 345 |
belaran@973 | 346 &interaction.tour.log-vp; |
belaran@973 | 347 |
youshe@983 | 348 <para id="x_67e">L'option <option role="hg-opt-log">-p</option> est |
andre@1015 | 349 incroyablement utile, il est donc important dans s'en rappeler.</para> |
belaran@973 | 350 |
belaran@973 | 351 </sect2> |
belaran@973 | 352 </sect1> |
belaran@973 | 353 <sect1> |
belaran@973 | 354 <title>Tout sur les options de commandes</title> |
belaran@973 | 355 |
belaran@973 | 356 <para id="x_30">Avant d'aller plus loin sur le fonctionnement |
belaran@973 | 357 des commandes de Mercurial, étudions un moment comment elles |
belaran@973 | 358 fonctionnent de manière générale. Vous trouverez ça probablement |
belaran@973 | 359 utile pour la suite de notre parcours.</para> |
belaran@973 | 360 |
belaran@973 | 361 <para id="x_31">Mercurial utilise une approche directe et cohérente |
youshe@983 | 362 pour interpréter les options que vous passez aux commandes. Il suit une |
youshe@983 | 363 convention commune à la plupart des systèmes Unix et Linux modernes.</para> |
belaran@973 | 364 |
belaran@973 | 365 <itemizedlist> |
belaran@973 | 366 <listitem><para id="x_32">Chaque option a un nom complet. Par exemple, |
belaran@973 | 367 comme nous l'avons déjà vu, la commande <command role="hg-cmd">hg |
belaran@973 | 368 log</command> accepte l'option <option role="hg-opt-log">--rev |
belaran@973 | 369 </option>.</para> |
belaran@973 | 370 </listitem> |
belaran@973 | 371 <listitem><para id="x_33">La plupart des options disposent de |
belaran@973 | 372 noms abrégés. Aussi, au lieu d'utiliser <option role="hg-opt-log">--rev |
belaran@973 | 373 </option>, vous pouvez utiliser <option role="hg-opt-log">-r</option>. |
wilk@1005 | 374 (Les options qui n'ont pas de nom abrégé sont généralement |
belaran@973 | 375 rarement utilisées).</para> |
belaran@973 | 376 </listitem> |
belaran@973 | 377 <listitem><para id="x_34">Les noms complets commencent par deux |
andre@1015 | 378 tirets (par exemple <option role="hg-opt-log">--rev</option>), |
andre@1015 | 379 alors que les options courtes commencent avec un seul (par exemple |
belaran@973 | 380 <option role="hg-opt-log">-r</option>).</para> |
belaran@973 | 381 </listitem> |
belaran@973 | 382 <listitem><para id="x_35">Les noms des options sont cohérents |
belaran@973 | 383 entre les commandes. Par exemple, chaque commande qui accepte |
wilk@1005 | 384 un <quote>changeset ID</quote> ou un numéro de révision accepte aussi <option |
belaran@973 | 385 role="hg-opt-log">-r</option> et <option role="hg-opt-log">--rev |
belaran@973 | 386 </option> comme arguments.</para> |
belaran@973 | 387 </listitem> |
belaran@973 | 388 </itemizedlist> |
belaran@973 | 389 |
belaran@973 | 390 <para id="x_36">Dans les exemples de ce livre, j'utilise les noms abrégés |
belaran@973 | 391 plutôt que les noms complets. Ceci est une préférence personnelle, pas |
belaran@973 | 392 une recommandation.</para> |
belaran@973 | 393 |
belaran@973 | 394 <para id="x_37">La plupart des commandes qui affichent une quelconque sortie |
belaran@973 | 395 à l'écran, afficheront davantage avec l'option <option role="hg-opt-global"> |
belaran@973 | 396 -v</option> (ou <option role="hg-opt-global">--verbose</option>), et |
belaran@973 | 397 moins avec l'option <option role="hg-opt-global">-q</option> (ou |
belaran@973 | 398 <option role="hg-opt-global">--quiet</option>).</para> |
belaran@973 | 399 |
belaran@973 | 400 <note> |
wilk@1005 | 401 <title>Cohérence dans le nom des options</title> |
belaran@973 | 402 |
youshe@983 | 403 <para id="x_680">Presque toujours, les commandes de Mercurial utilisent |
wilk@1005 | 404 des noms d'options cohérentes pour se référer à des concepts identiques. |
wilk@1005 | 405 Par exemple, si une commande concerne les <quote>changesets</quote>, vous les |
youshe@983 | 406 identifierez toujours avec l'option <option role="hg-opt-log">-r</option>. |
youshe@983 | 407 Cette utilisation cohérente des noms d'options permet de mémoriser plus |
wilk@1005 | 408 facilement quelles options acceptent une commande.</para> |
belaran@973 | 409 </note> |
belaran@973 | 410 |
belaran@973 | 411 |
belaran@973 | 412 </sect1> |
belaran@973 | 413 <sect1> |
belaran@973 | 414 <title>Faire et vérifier des modifications</title> |
belaran@973 | 415 |
belaran@973 | 416 <para id="x_38">Maintenant que nous avons une bonne idée des |
belaran@973 | 417 commandes pour consulter l'historique de Mercurial, regardons |
belaran@973 | 418 comment faire des modifications et les examiner.</para> |
belaran@973 | 419 |
wilk@1005 | 420 <para id="x_39">La première chose que nous allons faire est d'isoler notre |
wilk@1005 | 421 exercice dans un dépôt à part. Nous allons utiliser la commande <command |
youshe@983 | 422 role="hg-cmd">hg clone</command>, mais nous n'avons pas besoin de faire |
youshe@983 | 423 une copie de dépôt distant. Comme nous avons déjà une copie locale, nous |
youshe@983 | 424 pouvons juste faire un clone de celle-ci à la place. C'est beaucoup plus |
youshe@983 | 425 rapide que de faire une copie à travers le réseau, et un dépôt cloné |
youshe@983 | 426 localement prend également moins d'espace disque<footnote> |
youshe@983 | 427 <para id="x_681">L'économie d'espace disque apparait clairement quand les |
youshe@983 | 428 dépôts source et destination sont sur le même système de fichier, où, dans |
youshe@983 | 429 ce cas, Mercurial utilisera des liens physiques pour effectuer des partages |
youshe@983 | 430 copie-lors-des-écritures de ses métadonnées internes. Si cette explication |
andre@1015 | 431 ne signifie rien pour vous, ne vous inquiétez pas : tout ceci se passe de |
wilk@1005 | 432 manière transparente et automatique. Vous n'avez pas du tout besoin de |
youshe@983 | 433 comprendre ceci.</para></footnote>.</para> |
youshe@983 | 434 |
youshe@983 | 435 &interaction.tour.reclone; |
youshe@983 | 436 |
youshe@983 | 437 <para id="x_3a">On notera au passage qu'il est souvent considéré comme |
youshe@983 | 438 une bonne pratique de conserver une copie <quote>immaculée</quote> |
youshe@983 | 439 du dépôt distant, à partir de laquelle vous pourrez faire des |
youshe@983 | 440 copies locales temporaires pour créer des <quote>bacs à sable</quote> |
youshe@983 | 441 pour chaque tâche sur laquelle vous souhaitez travailler. Ceci |
youshe@983 | 442 vous permet de travailler sur plusieurs choses en parallèle, |
wilk@1005 | 443 chacunes isolées les unes des autres en attendant que ces tâches |
youshe@983 | 444 soient finies et que vous soyez prêt à les réintégrer. Parce |
youshe@983 | 445 que les copies locales sont peu coûteuses, il est très rapide |
youshe@983 | 446 de créer ou détruire des dépôts dès que vous n'en avez plus |
youshe@983 | 447 besoin.</para> |
youshe@983 | 448 |
youshe@983 | 449 <para id="x_3b">Dans notre dépôt <filename |
youshe@983 | 450 class="directory">my-hello</filename>, nous avons un fichier |
youshe@983 | 451 <filename>hello.c</filename> qui contient le classique <quote>hello, |
youshe@983 | 452 world</quote>.</para> |
youshe@983 | 453 |
youshe@983 | 454 &interaction.tour.cat1; |
youshe@983 | 455 |
andre@1015 | 456 <para id="x_682">Éditons ce fichier pour qu'il affiche une autre ligne |
youshe@983 | 457 sur la sortie standard.</para> |
youshe@983 | 458 |
youshe@983 | 459 &interaction.tour.cat2; |
youshe@983 | 460 |
youshe@983 | 461 <para id="x_3c">La commande Mercurial <command role="hg-cmd">hg |
youshe@983 | 462 status</command> nous dira ce que Mercurial sait des fichiers du |
youshe@983 | 463 dépôts.</para> |
youshe@983 | 464 |
youshe@983 | 465 &interaction.tour.status; |
youshe@983 | 466 |
youshe@983 | 467 <para id="x_3d">La commande <command role="hg-cmd">hg status</command> |
youshe@983 | 468 n'affichera pas le contenu des fichiers, mais une ligne commençant par |
youshe@983 | 469 <quote><literal>M</literal></quote> pour <filename>hello.c</filename>. |
andre@1015 | 470 À moins que vous lui demandiez, la commande <command role="hg-cmd">hg |
youshe@983 | 471 status</command> n'affichera aucune information sur les fichiers que |
youshe@983 | 472 vous n'avez pas modifiés.</para> |
youshe@983 | 473 |
belaran@997 | 474 <para id="x_3e">Le <quote><literal>M</literal></quote> indique que |
youshe@983 | 475 Mercurial a remarqué que nous avons modifié le fichier |
youshe@983 | 476 <filename>hello.c</filename>. Nous n'avons pas besoin |
youshe@983 | 477 <emphasis>d'informer</emphasis> Mercurial que nous allons modifier un |
youshe@983 | 478 fichier avant de commencer à le faire, ou que nous avons modifié un |
wilk@1005 | 479 fichier après avoir commencé à le faire, il est capable de le découvrir |
wilk@1005 | 480 tout seul.</para> |
youshe@983 | 481 |
youshe@983 | 482 <para id="x_3f">C'est déjà pratique de savoir que nous avons modifié le |
youshe@983 | 483 fichier <filename>hello.c</filename>, mais nous préférerions savoir |
youshe@983 | 484 exactement <emphasis>ce que</emphasis> nous avons changé. Pour ceci, nous |
youshe@983 | 485 utilisons la commande <command role="hg-cmd">hg diff</command>.</para> |
youshe@983 | 486 |
youshe@983 | 487 &interaction.tour.diff; |
youshe@983 | 488 |
youshe@983 | 489 <tip> |
youshe@983 | 490 <title>Comprendre les patches</title> |
youshe@983 | 491 |
youshe@983 | 492 <para id="x_683">Penser à jeter un oeil à <xref |
youshe@983 | 493 linkend="sec:mq:patch"/> si vous n'arrivez pas à lire la sortie |
youshe@983 | 494 ci-dessus.</para> |
youshe@983 | 495 </tip> |
youshe@983 | 496 </sect1> |
youshe@983 | 497 <sect1> |
andre@1015 | 498 <title>Enregistrer vos modifications dans une nouvelle révision</title> |
youshe@983 | 499 |
youshe@983 | 500 <para id="x_40">Nous pouvons modifier des fichiers, compiler et tester |
youshe@983 | 501 nos modifications, et utiliser les commandes <command role="hg-cmd">hg |
youshe@983 | 502 status</command> et <command role="hg-cmd">hg diff</command> pour |
youshe@983 | 503 voir les modifications effectuées, jusqu'à ce que nous soyons assez |
youshe@983 | 504 satisfaits pour décider d'enregistrer notre travail dans un |
wilk@1005 | 505 <quote>changeset</quote>.</para> |
youshe@983 | 506 |
youshe@983 | 507 <para id="x_41">La commande <command role="hg-cmd">hg commit</command> |
youshe@983 | 508 vous laisse créer une nouvelle révision, nous désignerons généralement |
youshe@983 | 509 cette opération par <quote>faire un commit</quote> ou |
andre@1015 | 510 <quote>commiter</quote>.</para> |
youshe@983 | 511 |
youshe@983 | 512 <sect2> |
youshe@983 | 513 <title>Définir le nom d'utilisateur</title> |
youshe@983 | 514 |
youshe@983 | 515 <para id="x_42">Quand vous exécutez la commande <command |
youshe@983 | 516 role="hg-cmd">hg commit</command> pour la première fois, il n'est |
youshe@983 | 517 pas garanti qu'elle réussisse du premier coup. En effet, Mercurial |
youshe@983 | 518 enregistre votre nom et votre adresse avec chaque modification que |
youshe@983 | 519 vous effectuez, de manière à ce que vous soyez capable (ou d'autres |
wilk@1005 | 520 le soient) de savoir qui a fait telle modification. Mercurial essaye |
youshe@983 | 521 automatiquement de découvrir un nom d'utilisateur qui ait un minimum |
wilk@1005 | 522 de sens pour effectuer l'opération de <quote>commit</quote> avec. Il va essayer |
youshe@983 | 523 chacune des méthodes suivantes, dans l'ordre :</para> |
youshe@983 | 524 |
youshe@983 | 525 <orderedlist> |
youshe@983 | 526 <listitem><para id="x_43">Si vous spécifiez l'option <option |
youshe@983 | 527 role="hg-opt-commit">-u</option> avec la commande <command |
youshe@983 | 528 role="hg-cmd">hg commit</command>, suivi d'un nom |
youshe@983 | 529 d'utilisateur, ceci aura toujours la priorité sur les autres |
youshe@983 | 530 méthodes ci dessous.</para></listitem> |
youshe@983 | 531 <listitem><para id="x_44">Si vous avez défini une variable |
youshe@983 | 532 d'environnement <envar>HGUSER</envar>, c'est cette valeur qui est |
youshe@983 | 533 alors utilisée.</para></listitem> |
youshe@983 | 534 <listitem><para id="x_45">Si vous créez un fichier nommé <filename |
youshe@983 | 535 role="special">.hgrc</filename> dans votre répertoire |
youshe@983 | 536 \textit{home}, avec une entrée <envar |
youshe@983 | 537 role="rc-item-ui">username</envar>, c'est la valeur associée |
youshe@983 | 538 qui sera utilisée. Pour voir à quoi ressemble le contenu de ce |
youshe@983 | 539 fichier regardez la section <xref |
youshe@983 | 540 linkend="sec:tour-basic:username"/> |
youshe@983 | 541 ci-dessous.</para></listitem> |
youshe@983 | 542 <listitem><para id="x_46">Si vous avez défini une variable |
youshe@983 | 543 d'environnement <envar>EMAIL</envar> celle ci sera utilisée |
youshe@983 | 544 ensuite.</para></listitem> |
youshe@983 | 545 <listitem><para id="x_47">Enfin, Mercurial interrogera votre système |
youshe@983 | 546 pour trouver votre nom d'utilisateur local ainsi que le nom de la |
youshe@983 | 547 machine hôte, et il fabriquera un nom d'utilisateur à partir de |
wilk@1005 | 548 ces données. Comme il arrive souvent que ce genre de nom soit |
youshe@983 | 549 totalement inutile, il vous préviendra en affichant un message |
youshe@983 | 550 d'avertissement.</para></listitem> |
youshe@983 | 551 </orderedlist> |
youshe@983 | 552 |
youshe@983 | 553 <para id="x_48">Si tous ces mécanismes échouent, Mercurial n'exécutera |
youshe@983 | 554 pas la commande, affichant un message d'erreur. Dans ce cas, il ne |
wilk@1005 | 555 vous laissera pas effectuer de <quote>commit</quote> tant que vous n'aurez pas |
youshe@983 | 556 défini un nom d'utilisateur.</para> |
youshe@983 | 557 |
youshe@983 | 558 <para id="x_49">Vous devriez penser à utiliser la variable |
youshe@983 | 559 d'environement <envar>HGUSER</envar> et l'option <option |
youshe@983 | 560 role="hg-opt-commit">-u</option> comme moyen pour |
youshe@983 | 561 <emphasis>changer</emphasis> le nom d'utilisateur par défaut. Pour |
youshe@983 | 562 une utilisation normale, la manière la plus simple et robuste |
youshe@983 | 563 d'opérer est de créer un fichier <filename |
wilk@1005 | 564 role="special">.hgrc</filename>, voir ci-dessous pour les détails |
youshe@983 | 565 à ce sujet.</para> |
youshe@983 | 566 |
youshe@983 | 567 <sect3 id="sec:tour-basic:username"> |
youshe@983 | 568 <title>Créer un fichier de configuration pour Mercurial</title> |
youshe@983 | 569 |
youshe@983 | 570 <para id="x_4a">Pour définir un nom d'utilisateur, utilisez votre |
youshe@983 | 571 éditeur de texte favori pour créer un fichier <filename |
youshe@983 | 572 role="special">.hgrc</filename> dans votre répertoire home. |
youshe@983 | 573 Mercurial va utiliser ce fichier pour retrouver votre |
youshe@983 | 574 configuration personnelle. Le contenu initial devrait |
youshe@983 | 575 ressembler à ceci :</para> |
youshe@983 | 576 |
youshe@983 | 577 <tip> |
youshe@983 | 578 <title><quote>Home directory</quote> sous Windows</title> |
youshe@983 | 579 |
wilk@1005 | 580 <para id="x_716">Quand on parle de répertoire <quote>home</quote>, sur une version |
youshe@983 | 581 anglaise d'une installation de Windows, il s'agira habituellement |
youshe@983 | 582 d'un répertoire nommée comme votre nom dans <filename>C:\Documents |
andre@1015 | 583 and Settings</filename>. Vous pouvez trouver de quel répertoire |
youshe@983 | 584 il s'agit en lançant une fenêtre d'interpréteur de commande et en |
youshe@983 | 585 exécutant la commande suivante :</para> |
belaran@973 | 586 |
youshe@983 | 587 <screen><prompt>C:\</prompt> <userinput>echo |
youshe@983 | 588 %UserProfile</userinput></screen> |
youshe@983 | 589 </tip> |
youshe@983 | 590 |
youshe@983 | 591 <programlisting># This is a Mercurial configuration file. |
belaran@973 | 592 [ui] |
belaran@973 | 593 username = Firstname Lastname <email.address@domain.net></programlisting> |
belaran@973 | 594 |
youshe@983 | 595 <para id="x_4b">La ligne avec <literal>[ui]</literal> commence une |
youshe@983 | 596 <emphasis>section</emphasis> du fichier de configuration, ainsi la ligne |
youshe@983 | 597 <quote><literal>username = ...</literal></quote> signifie <quote> |
youshe@983 | 598 définir la valeur de l'élément <literal>username</literal> dans la |
youshe@983 | 599 section <literal>ui</literal></quote>. Une section continue jusqu'à ce |
youshe@983 | 600 qu'une nouvelle commence, ou que la fin du fichier soit atteinte. |
youshe@983 | 601 Mercurial ignore les lignes vides et traite tout texte situé à la suite |
youshe@983 | 602 d'un <quote><literal>#</literal></quote> jusqu'à la fin de la ligne |
youshe@983 | 603 comme un commentaire.</para> |
belaran@973 | 604 |
belaran@973 | 605 </sect3> |
belaran@973 | 606 <sect3> |
belaran@973 | 607 <title>Choisir un nom d'utilisateur</title> |
youshe@983 | 608 |
youshe@983 | 609 <para id="x_4c">Vous pouvez utiliser n'importe quelle valeur |
youshe@983 | 610 pour votre <literal>username</literal>, car cette information |
youshe@983 | 611 est destinée à d'autres personnes et non à être interprétée |
youshe@983 | 612 par Mercurial. La convention que la plupart des personnes |
wilk@1005 | 613 suivent est d'utiliser leur nom suivie de leur adresse email, |
youshe@983 | 614 comme montré ci-dessus :</para> |
youshe@983 | 615 <note> |
youshe@983 | 616 <para id="x_4d">Le mécanisme interne du serveur web intégré à Mercurial, |
youshe@983 | 617 masque les adresses emails, pour rendre plus difficile leurs |
youshe@983 | 618 récupérations par les outils utilisés par les spammmers. |
youshe@983 | 619 Ceci réduit la probabilité que de recevoir encore plus de |
youshe@983 | 620 spam si vous vous publiez un dépôt sur internet.</para> |
youshe@983 | 621 </note> |
youshe@983 | 622 </sect3> |
youshe@983 | 623 </sect2> |
youshe@983 | 624 <sect2> |
wilk@1005 | 625 <title>Rédiger un message de <quote>commit</quote></title> |
wilk@1005 | 626 |
wilk@1005 | 627 <para id="x_4e">Lorsqu'on effectue une opération de <quote>commit</quote>, Mercurial |
youshe@983 | 628 lance automatiquement un éditeur de texte pour permettre de saisir |
youshe@983 | 629 un message qui décrira les modifications effectuées dans cette |
youshe@983 | 630 révision. Ce message est nommé le <emphasis>message de commit</emphasis>. |
youshe@983 | 631 Ce sera un enregistrement pour tout lecteur expliquant le pourquoi |
youshe@983 | 632 et le comment de vos modifications, et il sera affiché par la |
youshe@983 | 633 commande <command role="hg-cmd">hg log</command>.</para> |
youshe@983 | 634 |
youshe@983 | 635 &interaction.tour.commit; |
youshe@983 | 636 |
youshe@983 | 637 <para id="x_4f">L'éditeur que la commande <command role="hg-cmd">hg |
youshe@983 | 638 commit</command> déclenche ne contiendra qu'une ligne vide suivi |
youshe@983 | 639 d'un certain nombre de lignes commençant par <quote><literal>HG: |
youshe@983 | 640 </literal></quote>.</para> |
youshe@983 | 641 |
youshe@983 | 642 <programlisting> |
belaran@973 | 643 This is where I type my commit comment. |
belaran@973 | 644 |
belaran@973 | 645 HG: Enter commit message. Lines beginning with 'HG:' are removed. |
belaran@973 | 646 HG: -- |
belaran@973 | 647 HG: user: Bryan O'Sullivan <bos@serpentine.com> |
belaran@973 | 648 HG: branch 'default' |
belaran@973 | 649 HG: changed hello.c</programlisting> |
belaran@973 | 650 |
belaran@973 | 651 |
youshe@983 | 652 <para id="x_50">Mercurial ignore les lignes qui commencent |
youshe@983 | 653 avec <quote><literal>HG:</literal></quote>, il ne les |
youshe@983 | 654 utilise que pour nous indiquer quels fichiers modifiés il se |
wilk@1005 | 655 prépare à <quote>commiter</quote>. Modifier ou effacer ces lignes n'a |
wilk@1005 | 656 aucune conséquence sur l'opération de <quote>commit</quote>. |
youshe@983 | 657 </para> |
youshe@983 | 658 |
youshe@983 | 659 </sect2> |
youshe@983 | 660 <sect2> |
wilk@1005 | 661 <title>Rédiger un message approprié</title> |
youshe@983 | 662 |
youshe@983 | 663 <para id="x_51">Comme <command role="hg-cmd">hg log</command> n'affiche |
wilk@1005 | 664 que la première ligne du message de <quote>commit</quote> par défaut, il est souvent |
wilk@1005 | 665 considéré comme une bonne pratique de rédiger des messages de <quote>commit</quote> |
youshe@983 | 666 qui tiennent sur une seule ligne. Voilà un exemple concret de message |
wilk@1005 | 667 de <quote>commit</quote> qui <emphasis>ne suit pas</emphasis> cette directive, et |
youshe@983 | 668 qui a donc un résumé peu lisible.</para> |
youshe@983 | 669 |
youshe@983 | 670 <programlisting> |
belaran@973 | 671 changeset: 73:584af0e231be |
belaran@973 | 672 user: Censored Person <censored.person@example.org> |
belaran@973 | 673 date: Tue Sep 26 21:37:07 2006 -0700 |
belaran@973 | 674 summary: include buildmeister/commondefs. Add an exports and install |
youshe@983 | 675 </programlisting> |
youshe@983 | 676 |
andre@1015 | 677 <para id="x_52">À ce sujet, il faut noter qu'il n'existe pas de règle |
youshe@983 | 678 absolue dans ce domaine. Mercurial lui-même n'interprète pas les |
wilk@1005 | 679 contenus des messages de <quote>commit</quote>, ainsi votre projet est libre de |
youshe@983 | 680 concevoir différentes politiques de mise en page des messages.</para> |
youshe@983 | 681 |
youshe@983 | 682 <para id="x_53">Ma préférence personnelle va au message court, mais |
youshe@983 | 683 informatif, qui offre des précisions supplémentaires par rapport à ce |
youshe@983 | 684 que pourrait m'apprendre une commande <command role="hg-cmd">hg log |
youshe@983 | 685 --patch</command>.</para> |
youshe@983 | 686 |
youshe@983 | 687 <para id="x_55">Si vous exécutez la commande <command role="hg-cmd">hg |
youshe@983 | 688 commit</command> sans aucun argument, elle enregistre tous les |
youshe@983 | 689 changements qui ont été fait, et qui sont indiqué par les commandes |
youshe@983 | 690 <command role="hg-cmd">hg status</command> et <command |
youshe@983 | 691 role="hg-cmd">hg diff</command>.</para> |
youshe@983 | 692 |
youshe@983 | 693 <note> |
youshe@983 | 694 <title>Une surprise pour les utilisateurs habitués à Subversion</title> |
youshe@983 | 695 |
youshe@983 | 696 <para id="x_717">Comme n'importe quel autre commande de Mercurial, si |
wilk@1005 | 697 vous ne soumettez pas de manière explicite les noms des fichiers à |
andre@1015 | 698 <quote>commiter</quote> à la commande <command role="hg-cmd">hg commit</command>, elle |
youshe@983 | 699 va travailler sur l'ensemble du répertoire de travail. Soyez conscient |
youshe@983 | 700 de ceci si vous venez du monde Subversion ou CVS, car vous pourriez |
andre@1015 | 701 vous attendre à ce qu'elle opère uniquement sur le répertoire courant et ses |
andre@1015 | 702 sous-répertoires.</para> |
youshe@983 | 703 </note> |
youshe@983 | 704 </sect2> |
youshe@983 | 705 <sect2> |
wilk@1005 | 706 <title>Annuler un <quote>commit</quote></title> |
belaran@973 | 707 |
belaran@973 | 708 <para id="x_54">Si, en rédigeant le message, vous décidez que |
wilk@1005 | 709 finalement vous ne voulez pas effectuer ce <quote>commit</quote>, il suffit |
wilk@1005 | 710 de quitter simplement l'éditeur sans sauvegarder. Ceci n'aura aucune |
belaran@973 | 711 conséquence sur le dépôt ou les fichiers du répertoire de |
belaran@973 | 712 travail.</para> |
youshe@983 | 713 </sect2> |
youshe@983 | 714 |
youshe@983 | 715 <sect2> |
youshe@983 | 716 <title>Admirer votre travail</title> |
youshe@983 | 717 |
wilk@1005 | 718 <para id="x_56">Une fois que votre <quote>commit</quote> est terminé, vous |
youshe@983 | 719 pouvez utiliser la commande <command role="hg-cmd">hg tip</command> |
wilk@1005 | 720 pour afficher le <quote>changeset</quote> que vous venez de créer. Cette |
wilk@1005 | 721 commande produit une sortie à l'écran qui est identique à celle du |
youshe@983 | 722 <command role="hg-cmd">hg log</command>, mais qui n'affiche que la |
youshe@983 | 723 dernière révision du dépôt.</para> |
youshe@983 | 724 |
youshe@983 | 725 &interaction.tour.tip; |
youshe@983 | 726 |
youshe@983 | 727 <para id="x_57">On fait couramment référence à la dernière révision |
youshe@983 | 728 du dépôt comme étant la <emphasis>révision tip</emphasis>, ou plus |
youshe@983 | 729 simplement le <emphasis>tip</emphasis>.</para> |
youshe@983 | 730 |
youshe@983 | 731 <para id="x_684">Au passage, la commande <command role="hg-cmd">hg |
youshe@983 | 732 tip</command> accepte la plupart des options qu'accepte |
youshe@983 | 733 <command role="hg-cmd">hg log</command>. Ainsi <option |
andre@1015 | 734 role="hg-opt-global">-v</option> ci-dessus implique <quote>soit |
andre@1021 | 735 verbeux</quote>, <option role="hg-opt-tip">-p</option> |
andre@1021 | 736 veut dire <quote>affiche le patch</quote>. L'utilisation de l'option |
belaran@973 | 737 <option role="hg-opt-tip">-p</option> pour afficher un patch est un |
belaran@973 | 738 autre exemple de la cohérence des commandes évoquée plus tôt.</para> |
belaran@973 | 739 |
belaran@973 | 740 </sect2> |
belaran@973 | 741 </sect1> |
belaran@973 | 742 <sect1> |
belaran@973 | 743 <title>Partager ses modifications</title> |
belaran@973 | 744 |
belaran@997 | 745 <para id="x_58">Nous avons mentionné plus haut que les dépôts |
youshe@983 | 746 de Mercurial sont autosuffisants. Ce qui signifie que la nouvelle |
youshe@983 | 747 révision que vous venez de créer existe seulement dans votre |
youshe@983 | 748 répertoire <filename class="directory">my-hello</filename>. Étudions |
youshe@983 | 749 comment propager cette modification dans d'autres dépôts.</para> |
belaran@973 | 750 |
belaran@973 | 751 <sect2 id="sec:tour:pull"> |
belaran@973 | 752 <title>Récupérer les modifications d'autres dépôts</title> |
belaran@973 | 753 |
belaran@997 | 754 <para id="x_59">Pour commencer, construisons un clone de notre dépôt |
youshe@983 | 755 <filename class="directory">hello</filename> qui ne contiendra pas |
youshe@983 | 756 le changement que nous venons d'effectuer. Nous l'appellerons notre |
youshe@983 | 757 dépôt temporaire <filename |
youshe@983 | 758 class="directory">hello-pull</filename>.</para> |
youshe@983 | 759 |
youshe@983 | 760 &interaction.tour.clone-pull; |
youshe@983 | 761 |
youshe@983 | 762 <para id="x_5a">Nous allons utiliser la commande <command |
youshe@983 | 763 role="hg-cmd">hg pull</command> pour envoyer les modifications |
youshe@983 | 764 depuis <filename class="directory">my-hello</filename> dans <filename |
youshe@983 | 765 class="directory">hello-pull</filename>. Néanmoins, récupérer |
youshe@983 | 766 aveuglement des modifications depuis un dépôt a quelque chose d'un |
youshe@983 | 767 peu effrayant. Mercurial propose donc une commande <command |
youshe@983 | 768 role="hg-cmd">hg incoming</command> qui permet de savoir quelles |
youshe@983 | 769 modifications la commande <command role="hg-cmd">hg pull</command> |
youshe@983 | 770 <emphasis>pourrait</emphasis> entraîner dans notre dépôt, et ceci |
youshe@983 | 771 sans effectuer réellement de modification dessus.</para> |
belaran@973 | 772 |
belaran@973 | 773 &interaction.tour.incoming; |
youshe@983 | 774 |
youshe@983 | 775 <para id="x_5c">Apporter les modifications rapatriées dans un dépôt se |
youshe@983 | 776 résume donc à exécuter la commande <command role="hg-cmd">hg |
youshe@983 | 777 pull</command>, et préciser depuis quel dépôt effectuer le <command |
youshe@983 | 778 role="hg-cmd">hg pull</command>.</para> |
youshe@983 | 779 |
youshe@983 | 780 &interaction.tour.pull; |
youshe@983 | 781 |
youshe@983 | 782 <para id="x_5d">Comme vous le voyez avec une sortie avant et après de la |
youshe@983 | 783 commande <command role="hg-cmd">hg tip</command>, nous avons réussi à |
youshe@983 | 784 récupérer aisément les modifications dans notre dépôt. Il reste néanmoins |
wilk@1005 | 785 quelque chose à faire avant de retrouver ces modifications dans l'espace de |
youshe@983 | 786 travail.</para> |
youshe@983 | 787 |
youshe@983 | 788 <tip> |
youshe@983 | 789 <title>Récupérer des changements précis</title> |
youshe@983 | 790 |
youshe@983 | 791 <para id="x_5b">Il est possible à cause du délai entre l'exécution de la |
youshe@983 | 792 commande <command role="hg-cmd">hg incoming</command> et l'exécution de |
youshe@983 | 793 la commande <command role="hg-cmd">hg pull</command>, que vous ne |
youshe@983 | 794 puissiez pas voir toutes les modifications que vous rapporterez d'un |
youshe@983 | 795 autre dépôt. Supposons que vous récupériez les modifications d'un dépôt |
youshe@983 | 796 situé quelque part sur le réseau. Alors que vous regardez le résultat de |
youshe@983 | 797 la commande <command role="hg-cmd">hg incoming</command>, et avant que |
youshe@983 | 798 vous ne décidiez de récupérer ces modifications, quelqu'un peut ajouter |
youshe@983 | 799 de nouvelles révisions dans le dépôt distant. Ce qui signifie que vous |
wilk@1005 | 800 récupérez plus de révisions que ce que vous aviez regardées en utilisant |
youshe@983 | 801 la commande <command role="hg-cmd">hg incoming</command>.</para> |
youshe@983 | 802 |
youshe@983 | 803 <para id="x_718">Si vous voulez seulement récupérer ce que vous aviez |
wilk@1005 | 804 vérifié à l'aide de la commande <command role="hg-cmd">hg |
wilk@1005 | 805 incoming</command>, ou que pour d'autres raisons vous ne souhaitiez |
youshe@983 | 806 récupérer qu'un sous ensemble des révisions supplémentaires |
wilk@1005 | 807 disponibles, indiquez simplement les modifications que vous souhaitez |
youshe@983 | 808 récupérer par leurs ID de révision, soit <command>hg pull |
youshe@983 | 809 -r7e95bb</command>. </para> |
youshe@983 | 810 </tip> |
youshe@983 | 811 |
youshe@983 | 812 </sect2> |
youshe@983 | 813 <sect2> |
youshe@983 | 814 <title>Mise à jour de l'espace de travail</title> |
youshe@983 | 815 |
youshe@983 | 816 <para id="x_5e">Nous avons jusqu'à maintenant grossièrement défini la |
youshe@983 | 817 relation entre un dépôt et un espace de travail. La commande <command |
youshe@983 | 818 role="hg-cmd">hg pull</command> que nous avons exécutée dans la section |
youshe@983 | 819 <xref linkend="sec:tour:pull"/> a apporté des modifications, que nous |
youshe@983 | 820 avons vérifiées, dans notre dépôt, mais il n'y a aucune trace de ces |
youshe@983 | 821 modifications dans notre espace de travail. En effet, <command |
youshe@983 | 822 role="hg-cmd">hg pull</command> ne touche pas (par défaut) à l'espace |
youshe@983 | 823 de travail. C'est la commande <command role="hg-cmd">hg update</command> |
youshe@983 | 824 qui s'en charge.</para> |
youshe@983 | 825 |
youshe@983 | 826 &interaction.tour.update; |
youshe@983 | 827 |
youshe@983 | 828 <para id="x_5f">Il peut sembler un peu étrange que la commande <command |
youshe@983 | 829 role="hg-cmd">hg pull</command> ne mette pas à jour l'espace de travail |
youshe@983 | 830 automatiquement. Il y a en fait une très bonne raison à cela : vous |
wilk@1005 | 831 pouvez utiliser la commande <command role="hg-cmd">hg update</command> |
youshe@983 | 832 pour mettre à jour votre espace de travail à l'état dans lequel il était |
youshe@983 | 833 à <emphasis>n'importe quelle révision</emphasis> de l'historique du dépôt. |
youshe@983 | 834 Si vous aviez un espace de travail contenant une ancienne |
youshe@983 | 835 révision&emdash;pour chercher l'origine d'un bug, par exemple&emdash;et |
youshe@983 | 836 que vous effectuiez un <command role="hg-cmd">hg pull</command> qui |
youshe@983 | 837 mettrait à jour automatiquement votre espace de travail, vous ne seriez |
youshe@983 | 838 probablement pas très satisfait.</para> |
youshe@983 | 839 |
youshe@983 | 840 <para id="x_60">Néanmoins, comme les opérations de pull sont très souvent |
youshe@983 | 841 suivies d'un update, Mercurial vous permet de combiner les |
youshe@983 | 842 deux aisément en passant l'option <option role="hg-opt-pull">-u</option> |
youshe@983 | 843 à la commande <command role="hg-cmd">hg pull</command>.</para> |
youshe@983 | 844 |
youshe@983 | 845 <para id="x_61">Si vous étudiez de nouveau la sortie de la commande <command |
youshe@983 | 846 role="hg-cmd">hg pull</command> dans la section <xref |
youshe@983 | 847 linkend="sec:tour:pull"/> quand nous l'avons exécutée sans l'option |
youshe@983 | 848 <option role="hg-opt-pull">-u</option>, vous pouvez constater qu'elle a |
youshe@983 | 849 affiché un rappel assez utile : vous devez encore effectuer une |
youshe@983 | 850 opération pour mettre à jour votre espace de travail.</para> |
youshe@983 | 851 |
youshe@983 | 852 <para id="x_62">Pour découvrir sur quelle révision de l'espace de |
youshe@983 | 853 travail on se trouve, utilisez la commande <command role="hg-cmd">hg |
youshe@983 | 854 parents</command>.</para> |
youshe@983 | 855 |
youshe@983 | 856 &interaction.tour.parents; |
youshe@983 | 857 |
youshe@983 | 858 <para id="x_63">Si vous regardez de nouveau le dessin <xref |
youshe@983 | 859 linkend="fig:tour-basic:history"/>, vous verrez les flèches reliant |
youshe@983 | 860 entre elles les révisions. Le nœud d'où la flèche |
youshe@983 | 861 <emphasis>part</emphasis> est dans chaque cas un parent, |
youshe@983 | 862 et le nœud où la flèche <emphasis>arrive</emphasis> est un |
youshe@983 | 863 enfant.</para> |
youshe@983 | 864 |
youshe@983 | 865 <para id="x_64">Pour mettre à jour l'espace de travail d'une révision |
wilk@1005 | 866 particulière, indiquez un numéro de révision ou un <quote>changeset |
andre@1020 | 867 ID</quote> à la commande <command role="hg-cmd">hg update</command>.</para> |
youshe@983 | 868 |
youshe@983 | 869 &interaction.tour.older; |
youshe@983 | 870 |
youshe@983 | 871 <para id="x_65">Si vous ne précisez pas de manière explicite de numéro |
youshe@983 | 872 de révision la commande <command role="hg-cmd">hg update</command> |
youshe@983 | 873 mettra à jour votre espace de travail avec le contenu de la révison |
andre@1015 | 874 <quote>tip</quote>, comme montré dans l'exemple ci-dessus lors du second |
youshe@983 | 875 appel à <command role="hg-cmd">hg update</command>.</para> |
youshe@983 | 876 |
youshe@983 | 877 </sect2> |
youshe@983 | 878 <sect2> |
youshe@983 | 879 <title>Transférer les modifications vers un autre dépôt</title> |
youshe@983 | 880 |
youshe@983 | 881 <para id="x_66">Mercurial vous laisse transférer les modifications vers |
youshe@983 | 882 un autre dépôt, depuis votre dépôt actuel. Comme dans l'exemple du |
youshe@983 | 883 <command role="hg-cmd">hg pull</command> ci-dessus, nous allons créer |
youshe@983 | 884 un dépôt temporaire vers lequel transférer nos modifications.</para> |
youshe@983 | 885 |
youshe@983 | 886 &interaction.tour.clone-push; |
youshe@983 | 887 |
youshe@983 | 888 <para id="x_67">La commande <command role="hg-cmd">hg outgoing</command> |
youshe@983 | 889 nous indique quels changements nous allons transférer vers l'autre |
youshe@983 | 890 serveur.</para> |
youshe@983 | 891 |
youshe@983 | 892 &interaction.tour.outgoing; |
youshe@983 | 893 |
youshe@983 | 894 <para id="x_68">Et la commande <command role="hg-cmd">hg push</command> |
youshe@983 | 895 effectue réellement le transfert.</para> |
youshe@983 | 896 |
youshe@983 | 897 &interaction.tour.push; |
youshe@983 | 898 |
youshe@983 | 899 <para id="x_69">Comme avec <command role="hg-cmd">hg pull</command>, la |
youshe@983 | 900 commande <command role="hg-cmd">hg push</command> ne met pas à jour |
youshe@983 | 901 le répertoire de travail du dépôt dans lequel il transfère les |
youshe@983 | 902 modifications. À l'inverse de <command role="hg-cmd">hg |
youshe@983 | 903 pull</command>, <command role="hg-cmd">hg push</command> ne fournit |
youshe@983 | 904 pas d'option <literal>-u</literal> pour forcer la mise à jour de |
youshe@983 | 905 l'espace de travail cible. Cette asymétrie est délibéré : le dépot |
youshe@983 | 906 vers lequel nous transférons peut très bien être un serveur distant |
youshe@983 | 907 et partagé par plusieurs personnes. Si nous devions mettre à jour son |
youshe@983 | 908 répertoire de travail alors que quelqu'un d'autre travaille dessus, |
youshe@983 | 909 nous risquerions de perturber son travail.</para> |
youshe@983 | 910 |
andre@1015 | 911 <para id="x_6a">Que se passe-t-il lorsque vous essayez de récupérer |
youshe@983 | 912 ou de transférer vos modifications et que le dépôt cible a déjà reçu |
youshe@983 | 913 ces modifications ? Rien de bien excitant.</para> |
youshe@983 | 914 |
youshe@983 | 915 &interaction.tour.push.nothing; |
youshe@983 | 916 |
youshe@983 | 917 </sect2> |
youshe@983 | 918 |
youshe@983 | 919 <sect2> |
youshe@983 | 920 <title>Emplacements par défaut</title> |
youshe@983 | 921 |
youshe@983 | 922 <para id="x_719">Quand nous faisons un clone d'un dépôt, Mercurial |
youshe@983 | 923 enregistre l'emplacement du dépôt d'origine dans le fichier |
youshe@983 | 924 <filename>.hg/hgrc</filename> de notre nouveau dépôt. Si nous ne |
youshe@983 | 925 fournissons pas d'emplacement à la commande <command>hg |
youshe@983 | 926 pull</command> ou à la commande <command>hg push</command>, ces |
youshe@983 | 927 commandes utiliseront alors cet emplacement comme valeur par défaut. |
youshe@983 | 928 Les commandes <command>hg incoming</command> et <command>hg |
youshe@983 | 929 outgoing</command> feront de même.</para> |
youshe@983 | 930 |
youshe@983 | 931 <para id="x_71a">Si vous regardez le fichier |
youshe@983 | 932 <filename>.hg/hgrc</filename>, vous constaterez que son contenu |
youshe@983 | 933 ressemble à ce qui suit.</para> |
youshe@983 | 934 |
youshe@983 | 935 <programlisting>[paths] |
belaran@973 | 936 default = http://www.selenic.com/repo/hg</programlisting> |
belaran@973 | 937 |
youshe@983 | 938 <para id="x_71b">Il est possible&emdash;et souvent |
youshe@983 | 939 pratique&emdash;d'avoir un emplacement par défaut pour les commandes |
youshe@983 | 940 <command>hg push</command> et <command>hg outgoing</command> |
youshe@983 | 941 différent de celui des commandes <command>hg pull</command> et |
youshe@983 | 942 <command>hg incoming</command>. C'est faisable en ajoutant une entrée |
youshe@983 | 943 <literal>default-push</literal> à la section |
youshe@983 | 944 <literal>[paths]</literal> du <filename>.hg/hgrc</filename>, comme |
youshe@983 | 945 suit.</para> |
youshe@983 | 946 |
youshe@983 | 947 <programlisting>[paths] |
belaran@973 | 948 default = http://www.selenic.com/repo/hg |
belaran@973 | 949 default-push = http://hg.example.com/hg</programlisting> |
youshe@983 | 950 |
youshe@983 | 951 </sect2> |
youshe@983 | 952 <sect2> |
youshe@983 | 953 <title>Partager ses modifications à travers le réseau</title> |
youshe@983 | 954 |
youshe@983 | 955 <para id="x_6b">Les commandes que nous avons étudiées dans les sections |
youshe@983 | 956 précédentes ne sont pas limitées aux dépôts locaux. Chacune fonctionne |
youshe@983 | 957 de la même manière à travers une connexion réseau, il suffit de lui |
youshe@983 | 958 passer une URL à la place d'un chemin de fichier local.</para> |
youshe@983 | 959 |
youshe@983 | 960 &interaction.tour.outgoing.net; |
youshe@983 | 961 |
youshe@983 | 962 <para id="x_6c">Dans cet exemple, nous allons voir quels changements |
wilk@1005 | 963 nous pourrions transférer vers le dépôt distant, mais le dépôt n'est, |
youshe@983 | 964 de manière tout à fait compréhensible, pas configuré pour accepter |
youshe@983 | 965 des modifications d'utilisateurs anonymes.</para> |
youshe@983 | 966 |
youshe@983 | 967 &interaction.tour.push.net; |
youshe@983 | 968 |
youshe@983 | 969 </sect2> |
youshe@983 | 970 |
belaran@973 | 971 </sect1> |
belaran@973 | 972 |
belaran@973 | 973 <sect1> |
youshe@983 | 974 <title>Commencer un nouveau projet</title> |
youshe@983 | 975 |
youshe@983 | 976 <para id="x_71c">Il est tout aussi aisé de commencer un nouveau projet |
youshe@983 | 977 que de travailler sur un qui existe déjà. La commande <command>hg |
youshe@983 | 978 init</command> crée un nouveau dépôt Mercurial vide.</para> |
youshe@983 | 979 |
youshe@983 | 980 &interaction.ch01-new.init; |
youshe@983 | 981 |
youshe@983 | 982 <para id="x_71d">Ceci crée simplement un répertoire nommé |
youshe@983 | 983 <filename>myproject</filename> dans le répertoire courant.</para> |
youshe@983 | 984 |
youshe@983 | 985 &interaction.ch01-new.ls; |
youshe@983 | 986 |
youshe@983 | 987 <para id="x_71e">Nous pouvons dire que <filename>myproject</filename> est |
youshe@983 | 988 un dépôt Mercurial car il contient un répertoire |
youshe@983 | 989 <filename>.hg</filename>.</para> |
youshe@983 | 990 |
youshe@983 | 991 &interaction.ch01-new.ls2; |
youshe@983 | 992 |
youshe@983 | 993 <para id="x_71f">Si vous voulons ajouter quelques fichiers préexistants |
youshe@983 | 994 dans ce dépôt, il suffit de les recopier dans le répertoire de travail, |
youshe@983 | 995 et demander à Mercurial de commencer à les suivre en utilisant la |
youshe@983 | 996 commande <command>hg add</command>.</para> |
youshe@983 | 997 |
youshe@983 | 998 &interaction.ch01-new.add; |
youshe@983 | 999 |
youshe@983 | 1000 <para id="x_720">Une fois que nous sommes satisfaits de notre projet, |
youshe@983 | 1001 nous pouvons commencer à ajouter nos révisions.</para> |
youshe@983 | 1002 |
youshe@983 | 1003 &interaction.ch01-new.commit; |
youshe@983 | 1004 |
youshe@983 | 1005 <para id="x_721">Il ne prend que quelques instants pour commencer à |
belaran@973 | 1006 utiliser Mercurial sur un nouveau projet, ce qui fait aussi de ses |
belaran@973 | 1007 points forts. Travailler avec une gestion de révision devient très |
belaran@973 | 1008 facile, nous pouvons même l'utiliser pour les plus petits projets où |
wilk@1005 | 1009 nous aurions probablement jamais pensé utiliser un outil aussi |
belaran@973 | 1010 complexe.</para> |
youshe@983 | 1011 </sect1> |
belaran@964 | 1012 </chapter> |
belaran@964 | 1013 |
belaran@964 | 1014 <!-- |
belaran@964 | 1015 local variables: |
belaran@964 | 1016 sgml-parent-document: ("00book.xml" "book" "chapter") |
belaran@964 | 1017 end: |
belaran@973 | 1018 --> |