hgbook

annotate fr/ch02-tour-basic.xml @ 1006:c859c8d32838

french: small corrections on ch03
author William Dodé <wilk@flibuste.net>
date Tue Sep 15 13:40:45 2009 +0200 (2009-09-15)
parents c9ad85fd2f38
children ef0132c0a014
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>.
youshe@983 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>
youshe@983 53 <listitem><para id="x_4">Ubuntu et Debian:</para>
belaran@997 54 <programlisting>apt-get install mercurial</programlisting></listitem>
youshe@983 55 <listitem><para id="x_5">Fedora:</para>
belaran@997 56 <programlisting>yum install mercurial</programlisting></listitem>
youshe@983 57 <listitem><para id="x_6">Gentoo:</para>
youshe@983 58 <programlisting>emerge mercurial</programlisting></listitem>
youshe@983 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
youshe@983 79 installé proprement. Les informations affichées sur la version ne sont
youshe@983 80 pas réellement importantes en soit, 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
youshe@983 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
belaran@973 117 ce répertoire à n'impporte 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
youshe@983 149 localisation du dépôt à partir duquel il a été clôné, 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
youshe@983 153 <para id="x_17">Ce que tout ceci signifie pour le moment est 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
belaran@973 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
wilk@1005 220 pour la personne qui a créé ce <quote>changeset</quote>.</para>
belaran@973 221 </listitem>
youshe@983 222 <listitem><para id="x_21"><literal>résumé</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
youshe@983 229 référence aux derniers changements 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
youshe@983 311 veux toutes les révisions entre $a$ et $b$, inclus</quote></para>
youshe@983 312
youshe@983 313 &interaction.tour.log.range;
youshe@983 314
youshe@983 315 <para id="x_2d">Mercurial respecte aussi l'ordre dans lequel vous spécifiez
youshe@983 316 les révisions, ainsi <command role="hg-cmd">hg log -r 2:4</command>
wilk@1005 317 affichera <literal>2, 3, 4</literal> alors que <command role="hg-cmd">hg
wilk@1005 318 log -r 4:2</command> affichera <literal>4, 3, 2</literal>.</para>
belaran@973 319
belaran@973 320 </sect2>
belaran@973 321 <sect2>
belaran@973 322 <title>Informations détaillées</title>
belaran@973 323
belaran@973 324 <para id="x_2e">Le résumé affiché par <command role="hg-cmd">hg log</command>
belaran@973 325 est suffisant si vous savez déjà ce que vous cherchez. En
belaran@973 326 revanche, vous aurez probablement besoin de voir une description
belaran@973 327 complète du changement, ou une liste des fichiers modifiés si vous
wilk@1005 328 cherchez à déterminer qu'un <quote>changeset</quote> est bien celui que vous
wilk@1005 329 recherchez. L'option <option role="hg-opt-log">-v</option> de la commande <command role="hg-cmd">hg
belaran@973 330 log</command> (ou <option role="hp-opt-global">--verbose</option>) vous
belaran@973 331 donne ces informations supplémentaires.</para>
belaran@973 332
youshe@983 333 &interaction.tour.log-v;
belaran@973 334
belaran@973 335 <para id="x_2f">Si vous voulez voir à la fois la description
wilk@1005 336 et le contenu d'une modification, ajoutez l'option <option
belaran@973 337 role="hg-opt-log">-p</option> (ou <option role="hg-opt-log">
belaran@973 338 --patch</option>). Ceci affiche le contenu d'une modification
belaran@973 339 comme un <emphasis>diff unifié</emphasis>
belaran@973 340 <!-- \footnote{NdT: \textit{unified diff}} -->
belaran@973 341 (si vous n'avez jamais vu de diff unifié avant, consultez la
belaran@973 342 section <xref linkend="sec:mq:patch"/> pour un rapide
belaran@973 343 survol).</para>
belaran@973 344
belaran@973 345 &interaction.tour.log-vp;
belaran@973 346
youshe@983 347 <para id="x_67e">L'option <option role="hg-opt-log">-p</option> est
youshe@983 348 incroyablement utile, il est donc important dans s'en rappeller.</para>
belaran@973 349
belaran@973 350 </sect2>
belaran@973 351 </sect1>
belaran@973 352 <sect1>
belaran@973 353 <title>Tout sur les options de commandes</title>
belaran@973 354
belaran@973 355 <para id="x_30">Avant d'aller plus loin sur le fonctionnement
belaran@973 356 des commandes de Mercurial, étudions un moment comment elles
belaran@973 357 fonctionnent de manière générale. Vous trouverez ça probablement
belaran@973 358 utile pour la suite de notre parcours.</para>
belaran@973 359
belaran@973 360 <para id="x_31">Mercurial utilise une approche directe et cohérente
youshe@983 361 pour interpréter les options que vous passez aux commandes. Il suit une
youshe@983 362 convention commune à la plupart des systèmes Unix et Linux modernes.</para>
belaran@973 363
belaran@973 364 <itemizedlist>
belaran@973 365 <listitem><para id="x_32">Chaque option a un nom complet. Par exemple,
belaran@973 366 comme nous l'avons déjà vu, la commande <command role="hg-cmd">hg
belaran@973 367 log</command> accepte l'option <option role="hg-opt-log">--rev
belaran@973 368 </option>.</para>
belaran@973 369 </listitem>
belaran@973 370 <listitem><para id="x_33">La plupart des options disposent de
belaran@973 371 noms abrégés. Aussi, au lieu d'utiliser <option role="hg-opt-log">--rev
belaran@973 372 </option>, vous pouvez utiliser <option role="hg-opt-log">-r</option>.
wilk@1005 373 (Les options qui n'ont pas de nom abrégé sont généralement
belaran@973 374 rarement utilisées).</para>
belaran@973 375 </listitem>
belaran@973 376 <listitem><para id="x_34">Les noms complets commencent par deux
belaran@973 377 tirets (i.e. <option role="hg-opt-log">--rev</option>),
belaran@973 378 alors que les options courtes commencent avec un seul (i.e.
belaran@973 379 <option role="hg-opt-log">-r</option>).</para>
belaran@973 380 </listitem>
belaran@973 381 <listitem><para id="x_35">Les noms des options sont cohérents
belaran@973 382 entre les commandes. Par exemple, chaque commande qui accepte
wilk@1005 383 un <quote>changeset ID</quote> ou un numéro de révision accepte aussi <option
belaran@973 384 role="hg-opt-log">-r</option> et <option role="hg-opt-log">--rev
belaran@973 385 </option> comme arguments.</para>
belaran@973 386 </listitem>
belaran@973 387 </itemizedlist>
belaran@973 388
belaran@973 389 <para id="x_36">Dans les exemples de ce livre, j'utilise les noms abrégés
belaran@973 390 plutôt que les noms complets. Ceci est une préférence personnelle, pas
belaran@973 391 une recommandation.</para>
belaran@973 392
belaran@973 393 <para id="x_37">La plupart des commandes qui affichent une quelconque sortie
belaran@973 394 à l'écran, afficheront davantage avec l'option <option role="hg-opt-global">
belaran@973 395 -v</option> (ou <option role="hg-opt-global">--verbose</option>), et
belaran@973 396 moins avec l'option <option role="hg-opt-global">-q</option> (ou
belaran@973 397 <option role="hg-opt-global">--quiet</option>).</para>
belaran@973 398
belaran@973 399 <note>
wilk@1005 400 <title>Cohérence dans le nom des options</title>
belaran@973 401
youshe@983 402 <para id="x_680">Presque toujours, les commandes de Mercurial utilisent
wilk@1005 403 des noms d'options cohérentes pour se référer à des concepts identiques.
wilk@1005 404 Par exemple, si une commande concerne les <quote>changesets</quote>, vous les
youshe@983 405 identifierez toujours avec l'option <option role="hg-opt-log">-r</option>.
youshe@983 406 Cette utilisation cohérente des noms d'options permet de mémoriser plus
wilk@1005 407 facilement quelles options acceptent une commande.</para>
belaran@973 408 </note>
belaran@973 409
belaran@973 410
belaran@973 411 </sect1>
belaran@973 412 <sect1>
belaran@973 413 <title>Faire et vérifier des modifications</title>
belaran@973 414
belaran@973 415 <para id="x_38">Maintenant que nous avons une bonne idée des
belaran@973 416 commandes pour consulter l'historique de Mercurial, regardons
belaran@973 417 comment faire des modifications et les examiner.</para>
belaran@973 418
wilk@1005 419 <para id="x_39">La première chose que nous allons faire est d'isoler notre
wilk@1005 420 exercice dans un dépôt à part. Nous allons utiliser la commande <command
youshe@983 421 role="hg-cmd">hg clone</command>, mais nous n'avons pas besoin de faire
youshe@983 422 une copie de dépôt distant. Comme nous avons déjà une copie locale, nous
youshe@983 423 pouvons juste faire un clone de celle-ci à la place. C'est beaucoup plus
youshe@983 424 rapide que de faire une copie à travers le réseau, et un dépôt cloné
youshe@983 425 localement prend également moins d'espace disque<footnote>
youshe@983 426 <para id="x_681">L'économie d'espace disque apparait clairement quand les
youshe@983 427 dépôts source et destination sont sur le même système de fichier, où, dans
youshe@983 428 ce cas, Mercurial utilisera des liens physiques pour effectuer des partages
youshe@983 429 copie-lors-des-écritures de ses métadonnées internes. Si cette explication
youshe@983 430 ne signifie rien pour vous, ne vous inquietez pas : tout ceci se passe de
wilk@1005 431 manière transparente et automatique. Vous n'avez pas du tout besoin de
youshe@983 432 comprendre ceci.</para></footnote>.</para>
youshe@983 433
youshe@983 434 &interaction.tour.reclone;
youshe@983 435
youshe@983 436 <para id="x_3a">On notera au passage qu'il est souvent considéré comme
youshe@983 437 une bonne pratique de conserver une copie <quote>immaculée</quote>
youshe@983 438 du dépôt distant, à partir de laquelle vous pourrez faire des
youshe@983 439 copies locales temporaires pour créer des <quote>bacs à sable</quote>
youshe@983 440 pour chaque tâche sur laquelle vous souhaitez travailler. Ceci
youshe@983 441 vous permet de travailler sur plusieurs choses en parallèle,
wilk@1005 442 chacunes isolées les unes des autres en attendant que ces tâches
youshe@983 443 soient finies et que vous soyez prêt à les réintégrer. Parce
youshe@983 444 que les copies locales sont peu coûteuses, il est très rapide
youshe@983 445 de créer ou détruire des dépôts dès que vous n'en avez plus
youshe@983 446 besoin.</para>
youshe@983 447
youshe@983 448 <para id="x_3b">Dans notre dépôt <filename
youshe@983 449 class="directory">my-hello</filename>, nous avons un fichier
youshe@983 450 <filename>hello.c</filename> qui contient le classique <quote>hello,
youshe@983 451 world</quote>.</para>
youshe@983 452
youshe@983 453 &interaction.tour.cat1;
youshe@983 454
youshe@983 455 <para id="x_682">Editons ce fichier pour qu'il affiche une autre ligne
youshe@983 456 sur la sortie standard.</para>
youshe@983 457
youshe@983 458 &interaction.tour.cat2;
youshe@983 459
youshe@983 460 <para id="x_3c">La commande Mercurial <command role="hg-cmd">hg
youshe@983 461 status</command> nous dira ce que Mercurial sait des fichiers du
youshe@983 462 dépôts.</para>
youshe@983 463
youshe@983 464 &interaction.tour.status;
youshe@983 465
youshe@983 466 <para id="x_3d">La commande <command role="hg-cmd">hg status</command>
youshe@983 467 n'affichera pas le contenu des fichiers, mais une ligne commençant par
youshe@983 468 <quote><literal>M</literal></quote> pour <filename>hello.c</filename>.
youshe@983 469 A moins que vous lui demandiez, la commande <command role="hg-cmd">hg
youshe@983 470 status</command> n'affichera aucune information sur les fichiers que
youshe@983 471 vous n'avez pas modifiés.</para>
youshe@983 472
belaran@997 473 <para id="x_3e">Le <quote><literal>M</literal></quote> indique que
youshe@983 474 Mercurial a remarqué que nous avons modifié le fichier
youshe@983 475 <filename>hello.c</filename>. Nous n'avons pas besoin
youshe@983 476 <emphasis>d'informer</emphasis> Mercurial que nous allons modifier un
youshe@983 477 fichier avant de commencer à le faire, ou que nous avons modifié un
wilk@1005 478 fichier après avoir commencé à le faire, il est capable de le découvrir
wilk@1005 479 tout seul.</para>
youshe@983 480
youshe@983 481 <para id="x_3f">C'est déjà pratique de savoir que nous avons modifié le
youshe@983 482 fichier <filename>hello.c</filename>, mais nous préférerions savoir
youshe@983 483 exactement <emphasis>ce que</emphasis> nous avons changé. Pour ceci, nous
youshe@983 484 utilisons la commande <command role="hg-cmd">hg diff</command>.</para>
youshe@983 485
youshe@983 486 &interaction.tour.diff;
youshe@983 487
youshe@983 488 <tip>
youshe@983 489 <title>Comprendre les patches</title>
youshe@983 490
youshe@983 491 <para id="x_683">Penser à jeter un oeil à <xref
youshe@983 492 linkend="sec:mq:patch"/> si vous n'arrivez pas à lire la sortie
youshe@983 493 ci-dessus.</para>
youshe@983 494 </tip>
youshe@983 495 </sect1>
youshe@983 496 <sect1>
youshe@983 497 <title>Enregister vos modifications dans une nouvelle révision</title>
youshe@983 498
youshe@983 499 <para id="x_40">Nous pouvons modifier des fichiers, compiler et tester
youshe@983 500 nos modifications, et utiliser les commandes <command role="hg-cmd">hg
youshe@983 501 status</command> et <command role="hg-cmd">hg diff</command> pour
youshe@983 502 voir les modifications effectuées, jusqu'à ce que nous soyons assez
youshe@983 503 satisfaits pour décider d'enregistrer notre travail dans un
wilk@1005 504 <quote>changeset</quote>.</para>
youshe@983 505
youshe@983 506 <para id="x_41">La commande <command role="hg-cmd">hg commit</command>
youshe@983 507 vous laisse créer une nouvelle révision, nous désignerons généralement
youshe@983 508 cette opération par <quote>faire un commit</quote> ou
youshe@983 509 <quote>committer</quote>.</para>
youshe@983 510
youshe@983 511 <sect2>
youshe@983 512 <title>Définir le nom d'utilisateur</title>
youshe@983 513
youshe@983 514 <para id="x_42">Quand vous exécutez la commande <command
youshe@983 515 role="hg-cmd">hg commit</command> pour la première fois, il n'est
youshe@983 516 pas garanti qu'elle réussisse du premier coup. En effet, Mercurial
youshe@983 517 enregistre votre nom et votre adresse avec chaque modification que
youshe@983 518 vous effectuez, de manière à ce que vous soyez capable (ou d'autres
wilk@1005 519 le soient) de savoir qui a fait telle modification. Mercurial essaye
youshe@983 520 automatiquement de découvrir un nom d'utilisateur qui ait un minimum
wilk@1005 521 de sens pour effectuer l'opération de <quote>commit</quote> avec. Il va essayer
youshe@983 522 chacune des méthodes suivantes, dans l'ordre :</para>
youshe@983 523
youshe@983 524 <orderedlist>
youshe@983 525 <listitem><para id="x_43">Si vous spécifiez l'option <option
youshe@983 526 role="hg-opt-commit">-u</option> avec la commande <command
youshe@983 527 role="hg-cmd">hg commit</command>, suivi d'un nom
youshe@983 528 d'utilisateur, ceci aura toujours la priorité sur les autres
youshe@983 529 méthodes ci dessous.</para></listitem>
youshe@983 530 <listitem><para id="x_44">Si vous avez défini une variable
youshe@983 531 d'environnement <envar>HGUSER</envar>, c'est cette valeur qui est
youshe@983 532 alors utilisée.</para></listitem>
youshe@983 533 <listitem><para id="x_45">Si vous créez un fichier nommé <filename
youshe@983 534 role="special">.hgrc</filename> dans votre répertoire
youshe@983 535 \textit{home}, avec une entrée <envar
youshe@983 536 role="rc-item-ui">username</envar>, c'est la valeur associée
youshe@983 537 qui sera utilisée. Pour voir à quoi ressemble le contenu de ce
youshe@983 538 fichier regardez la section <xref
youshe@983 539 linkend="sec:tour-basic:username"/>
youshe@983 540 ci-dessous.</para></listitem>
youshe@983 541 <listitem><para id="x_46">Si vous avez défini une variable
youshe@983 542 d'environnement <envar>EMAIL</envar> celle ci sera utilisée
youshe@983 543 ensuite.</para></listitem>
youshe@983 544 <listitem><para id="x_47">Enfin, Mercurial interrogera votre système
youshe@983 545 pour trouver votre nom d'utilisateur local ainsi que le nom de la
youshe@983 546 machine hôte, et il fabriquera un nom d'utilisateur à partir de
wilk@1005 547 ces données. Comme il arrive souvent que ce genre de nom soit
youshe@983 548 totalement inutile, il vous préviendra en affichant un message
youshe@983 549 d'avertissement.</para></listitem>
youshe@983 550 </orderedlist>
youshe@983 551
youshe@983 552 <para id="x_48">Si tous ces mécanismes échouent, Mercurial n'exécutera
youshe@983 553 pas la commande, affichant un message d'erreur. Dans ce cas, il ne
wilk@1005 554 vous laissera pas effectuer de <quote>commit</quote> tant que vous n'aurez pas
youshe@983 555 défini un nom d'utilisateur.</para>
youshe@983 556
youshe@983 557 <para id="x_49">Vous devriez penser à utiliser la variable
youshe@983 558 d'environement <envar>HGUSER</envar> et l'option <option
youshe@983 559 role="hg-opt-commit">-u</option> comme moyen pour
youshe@983 560 <emphasis>changer</emphasis> le nom d'utilisateur par défaut. Pour
youshe@983 561 une utilisation normale, la manière la plus simple et robuste
youshe@983 562 d'opérer est de créer un fichier <filename
wilk@1005 563 role="special">.hgrc</filename>, voir ci-dessous pour les détails
youshe@983 564 à ce sujet.</para>
youshe@983 565
youshe@983 566 <sect3 id="sec:tour-basic:username">
youshe@983 567 <title>Créer un fichier de configuration pour Mercurial</title>
youshe@983 568
youshe@983 569 <para id="x_4a">Pour définir un nom d'utilisateur, utilisez votre
youshe@983 570 éditeur de texte favori pour créer un fichier <filename
youshe@983 571 role="special">.hgrc</filename> dans votre répertoire home.
youshe@983 572 Mercurial va utiliser ce fichier pour retrouver votre
youshe@983 573 configuration personnelle. Le contenu initial devrait
youshe@983 574 ressembler à ceci :</para>
youshe@983 575
youshe@983 576 <tip>
youshe@983 577 <title><quote>Home directory</quote> sous Windows</title>
youshe@983 578
wilk@1005 579 <para id="x_716">Quand on parle de répertoire <quote>home</quote>, sur une version
youshe@983 580 anglaise d'une installation de Windows, il s'agira habituellement
youshe@983 581 d'un répertoire nommée comme votre nom dans <filename>C:\Documents
youshe@983 582 and Settings</filename>. Vous pouvez trouver de quelle répertoire
youshe@983 583 il s'agit en lançant une fenêtre d'interpréteur de commande et en
youshe@983 584 exécutant la commande suivante :</para>
belaran@973 585
youshe@983 586 <screen><prompt>C:\</prompt> <userinput>echo
youshe@983 587 %UserProfile</userinput></screen>
youshe@983 588 </tip>
youshe@983 589
youshe@983 590 <programlisting># This is a Mercurial configuration file.
belaran@973 591 [ui]
belaran@973 592 username = Firstname Lastname &lt;email.address@domain.net&gt;</programlisting>
belaran@973 593
youshe@983 594 <para id="x_4b">La ligne avec <literal>[ui]</literal> commence une
youshe@983 595 <emphasis>section</emphasis> du fichier de configuration, ainsi la ligne
youshe@983 596 <quote><literal>username = ...</literal></quote> signifie <quote>
youshe@983 597 définir la valeur de l'élément <literal>username</literal> dans la
youshe@983 598 section <literal>ui</literal></quote>. Une section continue jusqu'à ce
youshe@983 599 qu'une nouvelle commence, ou que la fin du fichier soit atteinte.
youshe@983 600 Mercurial ignore les lignes vides et traite tout texte situé à la suite
youshe@983 601 d'un <quote><literal>#</literal></quote> jusqu'à la fin de la ligne
youshe@983 602 comme un commentaire.</para>
belaran@973 603
belaran@973 604 </sect3>
belaran@973 605 <sect3>
belaran@973 606 <title>Choisir un nom d'utilisateur</title>
youshe@983 607
youshe@983 608 <para id="x_4c">Vous pouvez utiliser n'importe quelle valeur
youshe@983 609 pour votre <literal>username</literal>, car cette information
youshe@983 610 est destinée à d'autres personnes et non à être interprétée
youshe@983 611 par Mercurial. La convention que la plupart des personnes
wilk@1005 612 suivent est d'utiliser leur nom suivie de leur adresse email,
youshe@983 613 comme montré ci-dessus :</para>
youshe@983 614 <note>
youshe@983 615 <para id="x_4d">Le mécanisme interne du serveur web intégré à Mercurial,
youshe@983 616 masque les adresses emails, pour rendre plus difficile leurs
youshe@983 617 récupérations par les outils utilisés par les spammmers.
youshe@983 618 Ceci réduit la probabilité que de recevoir encore plus de
youshe@983 619 spam si vous vous publiez un dépôt sur internet.</para>
youshe@983 620 </note>
youshe@983 621 </sect3>
youshe@983 622 </sect2>
youshe@983 623 <sect2>
wilk@1005 624 <title>Rédiger un message de <quote>commit</quote></title>
wilk@1005 625
wilk@1005 626 <para id="x_4e">Lorsqu'on effectue une opération de <quote>commit</quote>, Mercurial
youshe@983 627 lance automatiquement un éditeur de texte pour permettre de saisir
youshe@983 628 un message qui décrira les modifications effectuées dans cette
youshe@983 629 révision. Ce message est nommé le <emphasis>message de commit</emphasis>.
youshe@983 630 Ce sera un enregistrement pour tout lecteur expliquant le pourquoi
youshe@983 631 et le comment de vos modifications, et il sera affiché par la
youshe@983 632 commande <command role="hg-cmd">hg log</command>.</para>
youshe@983 633
youshe@983 634 &interaction.tour.commit;
youshe@983 635
youshe@983 636 <para id="x_4f">L'éditeur que la commande <command role="hg-cmd">hg
youshe@983 637 commit</command> déclenche ne contiendra qu'une ligne vide suivi
youshe@983 638 d'un certain nombre de lignes commençant par <quote><literal>HG:
youshe@983 639 </literal></quote>.</para>
youshe@983 640
youshe@983 641 <programlisting>
belaran@973 642 This is where I type my commit comment.
belaran@973 643
belaran@973 644 HG: Enter commit message. Lines beginning with 'HG:' are removed.
belaran@973 645 HG: --
belaran@973 646 HG: user: Bryan O'Sullivan &lt;bos@serpentine.com&gt;
belaran@973 647 HG: branch 'default'
belaran@973 648 HG: changed hello.c</programlisting>
belaran@973 649
belaran@973 650
youshe@983 651 <para id="x_50">Mercurial ignore les lignes qui commencent
youshe@983 652 avec <quote><literal>HG:</literal></quote>, il ne les
youshe@983 653 utilise que pour nous indiquer quels fichiers modifiés il se
wilk@1005 654 prépare à <quote>commiter</quote>. Modifier ou effacer ces lignes n'a
wilk@1005 655 aucune conséquence sur l'opération de <quote>commit</quote>.
youshe@983 656 </para>
youshe@983 657
youshe@983 658 </sect2>
youshe@983 659 <sect2>
wilk@1005 660 <title>Rédiger un message approprié</title>
youshe@983 661
youshe@983 662 <para id="x_51">Comme <command role="hg-cmd">hg log</command> n'affiche
wilk@1005 663 que la première ligne du message de <quote>commit</quote> par défaut, il est souvent
wilk@1005 664 considéré comme une bonne pratique de rédiger des messages de <quote>commit</quote>
youshe@983 665 qui tiennent sur une seule ligne. Voilà un exemple concret de message
wilk@1005 666 de <quote>commit</quote> qui <emphasis>ne suit pas</emphasis> cette directive, et
youshe@983 667 qui a donc un résumé peu lisible.</para>
youshe@983 668
youshe@983 669 <programlisting>
belaran@973 670 changeset: 73:584af0e231be
belaran@973 671 user: Censored Person &lt;censored.person@example.org&gt;
belaran@973 672 date: Tue Sep 26 21:37:07 2006 -0700
belaran@973 673 summary: include buildmeister/commondefs. Add an exports and install
youshe@983 674 </programlisting>
youshe@983 675
youshe@983 676 <para id="x_52">A ce sujet, il faut noter qu'il n'existe pas de règle
youshe@983 677 absolue dans ce domaine. Mercurial lui-même n'interprète pas les
wilk@1005 678 contenus des messages de <quote>commit</quote>, ainsi votre projet est libre de
youshe@983 679 concevoir différentes politiques de mise en page des messages.</para>
youshe@983 680
youshe@983 681 <para id="x_53">Ma préférence personnelle va au message court, mais
youshe@983 682 informatif, qui offre des précisions supplémentaires par rapport à ce
youshe@983 683 que pourrait m'apprendre une commande <command role="hg-cmd">hg log
youshe@983 684 --patch</command>.</para>
youshe@983 685
youshe@983 686 <para id="x_55">Si vous exécutez la commande <command role="hg-cmd">hg
youshe@983 687 commit</command> sans aucun argument, elle enregistre tous les
youshe@983 688 changements qui ont été fait, et qui sont indiqué par les commandes
youshe@983 689 <command role="hg-cmd">hg status</command> et <command
youshe@983 690 role="hg-cmd">hg diff</command>.</para>
youshe@983 691
youshe@983 692 <note>
youshe@983 693 <title>Une surprise pour les utilisateurs habitués à Subversion</title>
youshe@983 694
youshe@983 695 <para id="x_717">Comme n'importe quel autre commande de Mercurial, si
wilk@1005 696 vous ne soumettez pas de manière explicite les noms des fichiers à
wilk@1005 697 <quote>committer</quote> à la commande <command role="hg-cmd">hg commit</command>, elle
youshe@983 698 va travailler sur l'ensemble du répertoire de travail. Soyez conscient
youshe@983 699 de ceci si vous venez du monde Subversion ou CVS, car vous pourriez
wilk@1005 700 vous attendre à ce qu'elle opère uniquement sur le répertoire courant et ses sous
youshe@983 701 répertoires.</para>
youshe@983 702 </note>
youshe@983 703 </sect2>
youshe@983 704 <sect2>
wilk@1005 705 <title>Annuler un <quote>commit</quote></title>
belaran@973 706
belaran@973 707 <para id="x_54">Si, en rédigeant le message, vous décidez que
wilk@1005 708 finalement vous ne voulez pas effectuer ce <quote>commit</quote>, il suffit
wilk@1005 709 de quitter simplement l'éditeur sans sauvegarder. Ceci n'aura aucune
belaran@973 710 conséquence sur le dépôt ou les fichiers du répertoire de
belaran@973 711 travail.</para>
youshe@983 712 </sect2>
youshe@983 713
youshe@983 714 <sect2>
youshe@983 715 <title>Admirer votre travail</title>
youshe@983 716
wilk@1005 717 <para id="x_56">Une fois que votre <quote>commit</quote> est terminé, vous
youshe@983 718 pouvez utiliser la commande <command role="hg-cmd">hg tip</command>
wilk@1005 719 pour afficher le <quote>changeset</quote> que vous venez de créer. Cette
wilk@1005 720 commande produit une sortie à l'écran qui est identique à celle du
youshe@983 721 <command role="hg-cmd">hg log</command>, mais qui n'affiche que la
youshe@983 722 dernière révision du dépôt.</para>
youshe@983 723
youshe@983 724 &interaction.tour.tip;
youshe@983 725
youshe@983 726 <para id="x_57">On fait couramment référence à la dernière révision
youshe@983 727 du dépôt comme étant la <emphasis>révision tip</emphasis>, ou plus
youshe@983 728 simplement le <emphasis>tip</emphasis>.</para>
youshe@983 729
youshe@983 730 <para id="x_684">Au passage, la commande <command role="hg-cmd">hg
youshe@983 731 tip</command> accepte la plupart des options qu'accepte
youshe@983 732 <command role="hg-cmd">hg log</command>. Ainsi <option
youshe@983 733 role="hg-opt-global">-v</option> ci dessus implique <quote>soit
youshe@983 734 verbeux</quote>, <option role="hg-opt-tip">-p</option>
belaran@973 735 veux dire <quote>affiche le patch</quote>. L'utilisation de l'option
belaran@973 736 <option role="hg-opt-tip">-p</option> pour afficher un patch est un
belaran@973 737 autre exemple de la cohérence des commandes évoquée plus tôt.</para>
belaran@973 738
belaran@973 739 </sect2>
belaran@973 740 </sect1>
belaran@973 741 <sect1>
belaran@973 742 <title>Partager ses modifications</title>
belaran@973 743
belaran@997 744 <para id="x_58">Nous avons mentionné plus haut que les dépôts
youshe@983 745 de Mercurial sont autosuffisants. Ce qui signifie que la nouvelle
youshe@983 746 révision que vous venez de créer existe seulement dans votre
youshe@983 747 répertoire <filename class="directory">my-hello</filename>. Étudions
youshe@983 748 comment propager cette modification dans d'autres dépôts.</para>
belaran@973 749
belaran@973 750 <sect2 id="sec:tour:pull">
belaran@973 751 <title>Récupérer les modifications d'autres dépôts</title>
belaran@973 752
belaran@997 753 <para id="x_59">Pour commencer, construisons un clone de notre dépôt
youshe@983 754 <filename class="directory">hello</filename> qui ne contiendra pas
youshe@983 755 le changement que nous venons d'effectuer. Nous l'appellerons notre
youshe@983 756 dépôt temporaire <filename
youshe@983 757 class="directory">hello-pull</filename>.</para>
youshe@983 758
youshe@983 759 &interaction.tour.clone-pull;
youshe@983 760
youshe@983 761 <para id="x_5a">Nous allons utiliser la commande <command
youshe@983 762 role="hg-cmd">hg pull</command> pour envoyer les modifications
youshe@983 763 depuis <filename class="directory">my-hello</filename> dans <filename
youshe@983 764 class="directory">hello-pull</filename>. Néanmoins, récupérer
youshe@983 765 aveuglement des modifications depuis un dépôt a quelque chose d'un
youshe@983 766 peu effrayant. Mercurial propose donc une commande <command
youshe@983 767 role="hg-cmd">hg incoming</command> qui permet de savoir quelles
youshe@983 768 modifications la commande <command role="hg-cmd">hg pull</command>
youshe@983 769 <emphasis>pourrait</emphasis> entraîner dans notre dépôt, et ceci
youshe@983 770 sans effectuer réellement de modification dessus.</para>
belaran@973 771
belaran@973 772 &interaction.tour.incoming;
youshe@983 773
youshe@983 774 <para id="x_5c">Apporter les modifications rapatriées dans un dépôt se
youshe@983 775 résume donc à exécuter la commande <command role="hg-cmd">hg
youshe@983 776 pull</command>, et préciser depuis quel dépôt effectuer le <command
youshe@983 777 role="hg-cmd">hg pull</command>.</para>
youshe@983 778
youshe@983 779 &interaction.tour.pull;
youshe@983 780
youshe@983 781 <para id="x_5d">Comme vous le voyez avec une sortie avant et après de la
youshe@983 782 commande <command role="hg-cmd">hg tip</command>, nous avons réussi à
youshe@983 783 récupérer aisément les modifications dans notre dépôt. Il reste néanmoins
wilk@1005 784 quelque chose à faire avant de retrouver ces modifications dans l'espace de
youshe@983 785 travail.</para>
youshe@983 786
youshe@983 787 <tip>
youshe@983 788 <title>Récupérer des changements précis</title>
youshe@983 789
youshe@983 790 <para id="x_5b">Il est possible à cause du délai entre l'exécution de la
youshe@983 791 commande <command role="hg-cmd">hg incoming</command> et l'exécution de
youshe@983 792 la commande <command role="hg-cmd">hg pull</command>, que vous ne
youshe@983 793 puissiez pas voir toutes les modifications que vous rapporterez d'un
youshe@983 794 autre dépôt. Supposons que vous récupériez les modifications d'un dépôt
youshe@983 795 situé quelque part sur le réseau. Alors que vous regardez le résultat de
youshe@983 796 la commande <command role="hg-cmd">hg incoming</command>, et avant que
youshe@983 797 vous ne décidiez de récupérer ces modifications, quelqu'un peut ajouter
youshe@983 798 de nouvelles révisions dans le dépôt distant. Ce qui signifie que vous
wilk@1005 799 récupérez plus de révisions que ce que vous aviez regardées en utilisant
youshe@983 800 la commande <command role="hg-cmd">hg incoming</command>.</para>
youshe@983 801
youshe@983 802 <para id="x_718">Si vous voulez seulement récupérer ce que vous aviez
wilk@1005 803 vérifié à l'aide de la commande <command role="hg-cmd">hg
wilk@1005 804 incoming</command>, ou que pour d'autres raisons vous ne souhaitiez
youshe@983 805 récupérer qu'un sous ensemble des révisions supplémentaires
wilk@1005 806 disponibles, indiquez simplement les modifications que vous souhaitez
youshe@983 807 récupérer par leurs ID de révision, soit <command>hg pull
youshe@983 808 -r7e95bb</command>. </para>
youshe@983 809 </tip>
youshe@983 810
youshe@983 811 </sect2>
youshe@983 812 <sect2>
youshe@983 813 <title>Mise à jour de l'espace de travail</title>
youshe@983 814
youshe@983 815 <para id="x_5e">Nous avons jusqu'à maintenant grossièrement défini la
youshe@983 816 relation entre un dépôt et un espace de travail. La commande <command
youshe@983 817 role="hg-cmd">hg pull</command> que nous avons exécutée dans la section
youshe@983 818 <xref linkend="sec:tour:pull"/> a apporté des modifications, que nous
youshe@983 819 avons vérifiées, dans notre dépôt, mais il n'y a aucune trace de ces
youshe@983 820 modifications dans notre espace de travail. En effet, <command
youshe@983 821 role="hg-cmd">hg pull</command> ne touche pas (par défaut) à l'espace
youshe@983 822 de travail. C'est la commande <command role="hg-cmd">hg update</command>
youshe@983 823 qui s'en charge.</para>
youshe@983 824
youshe@983 825 &interaction.tour.update;
youshe@983 826
youshe@983 827 <para id="x_5f">Il peut sembler un peu étrange que la commande <command
youshe@983 828 role="hg-cmd">hg pull</command> ne mette pas à jour l'espace de travail
youshe@983 829 automatiquement. Il y a en fait une très bonne raison à cela : vous
wilk@1005 830 pouvez utiliser la commande <command role="hg-cmd">hg update</command>
youshe@983 831 pour mettre à jour votre espace de travail à l'état dans lequel il était
youshe@983 832 à <emphasis>n'importe quelle révision</emphasis> de l'historique du dépôt.
youshe@983 833 Si vous aviez un espace de travail contenant une ancienne
youshe@983 834 révision&emdash;pour chercher l'origine d'un bug, par exemple&emdash;et
youshe@983 835 que vous effectuiez un <command role="hg-cmd">hg pull</command> qui
youshe@983 836 mettrait à jour automatiquement votre espace de travail, vous ne seriez
youshe@983 837 probablement pas très satisfait.</para>
youshe@983 838
youshe@983 839 <para id="x_60">Néanmoins, comme les opérations de pull sont très souvent
youshe@983 840 suivies d'un update, Mercurial vous permet de combiner les
youshe@983 841 deux aisément en passant l'option <option role="hg-opt-pull">-u</option>
youshe@983 842 à la commande <command role="hg-cmd">hg pull</command>.</para>
youshe@983 843
youshe@983 844 <para id="x_61">Si vous étudiez de nouveau la sortie de la commande <command
youshe@983 845 role="hg-cmd">hg pull</command> dans la section <xref
youshe@983 846 linkend="sec:tour:pull"/> quand nous l'avons exécutée sans l'option
youshe@983 847 <option role="hg-opt-pull">-u</option>, vous pouvez constater qu'elle a
youshe@983 848 affiché un rappel assez utile : vous devez encore effectuer une
youshe@983 849 opération pour mettre à jour votre espace de travail.</para>
youshe@983 850
youshe@983 851 <para id="x_62">Pour découvrir sur quelle révision de l'espace de
youshe@983 852 travail on se trouve, utilisez la commande <command role="hg-cmd">hg
youshe@983 853 parents</command>.</para>
youshe@983 854
youshe@983 855 &interaction.tour.parents;
youshe@983 856
youshe@983 857 <para id="x_63">Si vous regardez de nouveau le dessin <xref
youshe@983 858 linkend="fig:tour-basic:history"/>, vous verrez les flèches reliant
youshe@983 859 entre elles les révisions. Le nœud d'où la flèche
youshe@983 860 <emphasis>part</emphasis> est dans chaque cas un parent,
youshe@983 861 et le nœud où la flèche <emphasis>arrive</emphasis> est un
youshe@983 862 enfant.</para>
youshe@983 863
youshe@983 864 <para id="x_64">Pour mettre à jour l'espace de travail d'une révision
wilk@1005 865 particulière, indiquez un numéro de révision ou un <quote>changeset
wilk@1005 866 ID</quote à la commande <command role="hg-cmd">hg update</command>.</para>
youshe@983 867
youshe@983 868 &interaction.tour.older;
youshe@983 869
youshe@983 870 <para id="x_65">Si vous ne précisez pas de manière explicite de numéro
youshe@983 871 de révision la commande <command role="hg-cmd">hg update</command>
youshe@983 872 mettra à jour votre espace de travail avec le contenu de la révison
wilk@1005 873 <quote>tip</quote>, comme montré dans l'exemple ci dessus lors du second
youshe@983 874 appel à <command role="hg-cmd">hg update</command>.</para>
youshe@983 875
youshe@983 876 </sect2>
youshe@983 877 <sect2>
youshe@983 878 <title>Transférer les modifications vers un autre dépôt</title>
youshe@983 879
youshe@983 880 <para id="x_66">Mercurial vous laisse transférer les modifications vers
youshe@983 881 un autre dépôt, depuis votre dépôt actuel. Comme dans l'exemple du
youshe@983 882 <command role="hg-cmd">hg pull</command> ci-dessus, nous allons créer
youshe@983 883 un dépôt temporaire vers lequel transférer nos modifications.</para>
youshe@983 884
youshe@983 885 &interaction.tour.clone-push;
youshe@983 886
youshe@983 887 <para id="x_67">La commande <command role="hg-cmd">hg outgoing</command>
youshe@983 888 nous indique quels changements nous allons transférer vers l'autre
youshe@983 889 serveur.</para>
youshe@983 890
youshe@983 891 &interaction.tour.outgoing;
youshe@983 892
youshe@983 893 <para id="x_68">Et la commande <command role="hg-cmd">hg push</command>
youshe@983 894 effectue réellement le transfert.</para>
youshe@983 895
youshe@983 896 &interaction.tour.push;
youshe@983 897
youshe@983 898 <para id="x_69">Comme avec <command role="hg-cmd">hg pull</command>, la
youshe@983 899 commande <command role="hg-cmd">hg push</command> ne met pas à jour
youshe@983 900 le répertoire de travail du dépôt dans lequel il transfère les
youshe@983 901 modifications. À l'inverse de <command role="hg-cmd">hg
youshe@983 902 pull</command>, <command role="hg-cmd">hg push</command> ne fournit
youshe@983 903 pas d'option <literal>-u</literal> pour forcer la mise à jour de
youshe@983 904 l'espace de travail cible. Cette asymétrie est délibéré : le dépot
youshe@983 905 vers lequel nous transférons peut très bien être un serveur distant
youshe@983 906 et partagé par plusieurs personnes. Si nous devions mettre à jour son
youshe@983 907 répertoire de travail alors que quelqu'un d'autre travaille dessus,
youshe@983 908 nous risquerions de perturber son travail.</para>
youshe@983 909
wilk@1005 910 <para id="x_6a">Que se passe-t'il lorsque vous essayez de récupérer
youshe@983 911 ou de transférer vos modifications et que le dépôt cible a déjà reçu
youshe@983 912 ces modifications ? Rien de bien excitant.</para>
youshe@983 913
youshe@983 914 &interaction.tour.push.nothing;
youshe@983 915
youshe@983 916 </sect2>
youshe@983 917
youshe@983 918 <sect2>
youshe@983 919 <title>Emplacements par défaut</title>
youshe@983 920
youshe@983 921 <para id="x_719">Quand nous faisons un clone d'un dépôt, Mercurial
youshe@983 922 enregistre l'emplacement du dépôt d'origine dans le fichier
youshe@983 923 <filename>.hg/hgrc</filename> de notre nouveau dépôt. Si nous ne
youshe@983 924 fournissons pas d'emplacement à la commande <command>hg
youshe@983 925 pull</command> ou à la commande <command>hg push</command>, ces
youshe@983 926 commandes utiliseront alors cet emplacement comme valeur par défaut.
youshe@983 927 Les commandes <command>hg incoming</command> et <command>hg
youshe@983 928 outgoing</command> feront de même.</para>
youshe@983 929
youshe@983 930 <para id="x_71a">Si vous regardez le fichier
youshe@983 931 <filename>.hg/hgrc</filename>, vous constaterez que son contenu
youshe@983 932 ressemble à ce qui suit.</para>
youshe@983 933
youshe@983 934 <programlisting>[paths]
belaran@973 935 default = http://www.selenic.com/repo/hg</programlisting>
belaran@973 936
youshe@983 937 <para id="x_71b">Il est possible&emdash;et souvent
youshe@983 938 pratique&emdash;d'avoir un emplacement par défaut pour les commandes
youshe@983 939 <command>hg push</command> et <command>hg outgoing</command>
youshe@983 940 différent de celui des commandes <command>hg pull</command> et
youshe@983 941 <command>hg incoming</command>. C'est faisable en ajoutant une entrée
youshe@983 942 <literal>default-push</literal> à la section
youshe@983 943 <literal>[paths]</literal> du <filename>.hg/hgrc</filename>, comme
youshe@983 944 suit.</para>
youshe@983 945
youshe@983 946 <programlisting>[paths]
belaran@973 947 default = http://www.selenic.com/repo/hg
belaran@973 948 default-push = http://hg.example.com/hg</programlisting>
youshe@983 949
youshe@983 950 </sect2>
youshe@983 951 <sect2>
youshe@983 952 <title>Partager ses modifications à travers le réseau</title>
youshe@983 953
youshe@983 954 <para id="x_6b">Les commandes que nous avons étudiées dans les sections
youshe@983 955 précédentes ne sont pas limitées aux dépôts locaux. Chacune fonctionne
youshe@983 956 de la même manière à travers une connexion réseau, il suffit de lui
youshe@983 957 passer une URL à la place d'un chemin de fichier local.</para>
youshe@983 958
youshe@983 959 &interaction.tour.outgoing.net;
youshe@983 960
youshe@983 961 <para id="x_6c">Dans cet exemple, nous allons voir quels changements
wilk@1005 962 nous pourrions transférer vers le dépôt distant, mais le dépôt n'est,
youshe@983 963 de manière tout à fait compréhensible, pas configuré pour accepter
youshe@983 964 des modifications d'utilisateurs anonymes.</para>
youshe@983 965
youshe@983 966 &interaction.tour.push.net;
youshe@983 967
youshe@983 968 </sect2>
youshe@983 969
belaran@973 970 </sect1>
belaran@973 971
belaran@973 972 <sect1>
youshe@983 973 <title>Commencer un nouveau projet</title>
youshe@983 974
youshe@983 975 <para id="x_71c">Il est tout aussi aisé de commencer un nouveau projet
youshe@983 976 que de travailler sur un qui existe déjà. La commande <command>hg
youshe@983 977 init</command> crée un nouveau dépôt Mercurial vide.</para>
youshe@983 978
youshe@983 979 &interaction.ch01-new.init;
youshe@983 980
youshe@983 981 <para id="x_71d">Ceci crée simplement un répertoire nommé
youshe@983 982 <filename>myproject</filename> dans le répertoire courant.</para>
youshe@983 983
youshe@983 984 &interaction.ch01-new.ls;
youshe@983 985
youshe@983 986 <para id="x_71e">Nous pouvons dire que <filename>myproject</filename> est
youshe@983 987 un dépôt Mercurial car il contient un répertoire
youshe@983 988 <filename>.hg</filename>.</para>
youshe@983 989
youshe@983 990 &interaction.ch01-new.ls2;
youshe@983 991
youshe@983 992 <para id="x_71f">Si vous voulons ajouter quelques fichiers préexistants
youshe@983 993 dans ce dépôt, il suffit de les recopier dans le répertoire de travail,
youshe@983 994 et demander à Mercurial de commencer à les suivre en utilisant la
youshe@983 995 commande <command>hg add</command>.</para>
youshe@983 996
youshe@983 997 &interaction.ch01-new.add;
youshe@983 998
youshe@983 999 <para id="x_720">Une fois que nous sommes satisfaits de notre projet,
youshe@983 1000 nous pouvons commencer à ajouter nos révisions.</para>
youshe@983 1001
youshe@983 1002 &interaction.ch01-new.commit;
youshe@983 1003
youshe@983 1004 <para id="x_721">Il ne prend que quelques instants pour commencer à
belaran@973 1005 utiliser Mercurial sur un nouveau projet, ce qui fait aussi de ses
belaran@973 1006 points forts. Travailler avec une gestion de révision devient très
belaran@973 1007 facile, nous pouvons même l'utiliser pour les plus petits projets où
wilk@1005 1008 nous aurions probablement jamais pensé utiliser un outil aussi
belaran@973 1009 complexe.</para>
youshe@983 1010 </sect1>
belaran@964 1011 </chapter>
belaran@964 1012
belaran@964 1013 <!--
belaran@964 1014 local variables:
belaran@964 1015 sgml-parent-document: ("00book.xml" "book" "chapter")
belaran@964 1016 end:
belaran@973 1017 -->