hgbook

annotate fr/ch02-tour-basic.xml @ 977:719b03ea27c8

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