hgbook

annotate fr/ch02-tour-basic.xml @ 964:6b680d569bb4

deleting a bunch of files not longer necessary to build the documentation.
Adding missing newly files needed to build the documentation
author Romain PELISSE <belaran@gmail.com>
date Sun Aug 16 04:58:01 2009 +0200 (2009-08-16)
parents
children 1df99de46e39
rev   line source
belaran@964 1 <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
belaran@964 2
belaran@964 3 <chapter>
belaran@964 4 <title>Un rapide tour de Mercurial</title>
belaran@964 5 <para>\label{chap:tour-basic}</para>
belaran@964 6
belaran@964 7 <sect1>
belaran@964 8 <title>Installer Mercurial sur votre système</title>
belaran@964 9 <para>\label{sec:tour:install}</para>
belaran@964 10
belaran@964 11 <para>Des paquetages binaires de Mercurial sont disponibles pour la plupart
belaran@964 12 des systèmes d'exploitation, ce qui rend facile l'utilisation immédiate
belaran@964 13 de Mercurial sur votre ordinateur.</para>
belaran@964 14
belaran@964 15 <sect2>
belaran@964 16 <title>Linux</title>
belaran@964 17
belaran@964 18 <para>Parce que chaque distribution de Linux a ses propres outils de gestion
belaran@964 19 de paquets, politiques et rythmes de développements, il est difficile de
belaran@964 20 donner un ensemble d'instructions uniques pour installer les binaires de
belaran@964 21 Mercurial. La version de Mercurial avec laquelle vous vous retrouverez
belaran@964 22 dépendra grandement de l'activité de la personne en charge du paquetage
belaran@964 23 pour la distribution.</para>
belaran@964 24
belaran@964 25 <para>Pour rester simple, je me concentrerai sur l'installation de Mercurial
belaran@964 26 en ligne de commande, sous les distributions les plus courantes. La
belaran@964 27 plupart des distributions fournissent des gestionnaires graphiques de
belaran@964 28 paquetage qui vous permettront d'installer Mercurial en quelques clicks.
belaran@964 29 Le paquetage devrait se nommer \textit{mercurial}.</para>
belaran@964 30
belaran@964 31 <itemizedlist>
belaran@964 32 <listitem><para>Debian:</para>
belaran@964 33 </listitem><programlisting>
belaran@964 34 <listitem><para> apt-get install mercurial</para>
belaran@964 35 </listitem></programlisting></para>
belaran@964 36 </listitem>
belaran@964 37 <listitem><para>Fedora Core:
belaran@964 38 </para>
belaran@964 39 </listitem><programlisting>
belaran@964 40 <listitem><para> yum install mercurial
belaran@964 41 </para>
belaran@964 42 </listitem></programlisting>
belaran@964 43
belaran@964 44 </para>
belaran@964 45 </listitem>
belaran@964 46 <listitem><para>Gentoo:
belaran@964 47 </para>
belaran@964 48 </listitem><programlisting>
belaran@964 49 <listitem><para> emerge mercurial
belaran@964 50 </para>
belaran@964 51 </listitem></programlisting>
belaran@964 52
belaran@964 53 </para>
belaran@964 54 </listitem>
belaran@964 55 <listitem><para>OpenSUSE:
belaran@964 56 </para>
belaran@964 57 </listitem><programlisting>
belaran@964 58 <listitem><para> yum install mercurial
belaran@964 59 </para>
belaran@964 60 </listitem></programlisting>
belaran@964 61
belaran@964 62 </para>
belaran@964 63 </listitem>
belaran@964 64 <listitem><para>Ubuntu: Le paquetage de Mercurial d'Ubuntu est construit sur celui de Debian.
belaran@964 65 Pour l'installer, exécutez simplement les commandes suivantes:
belaran@964 66 </para>
belaran@964 67 </listitem><programlisting>
belaran@964 68 <listitem><para> apt-get install mercurial
belaran@964 69 </para>
belaran@964 70 </listitem></programlisting>
belaran@964 71 <listitem><para> Les paquetages Ubuntu pour Mercurial ont tendance à être un peu en retard
belaran@964 72 par rapport au paquetage Debian (au moment de l'écriture de ce livre, il
belaran@964 73 faut compter à peu près un retard de 7 mois), ce qui signifie que parfois
belaran@964 74 sur Ubuntu, vous risquez de rencontrer des problèmes qui ont été corrigés
belaran@964 75 depuis longtemps dans les paquetages Debian.
belaran@964 76 </para>
belaran@964 77 </listitem></itemizedlist>
belaran@964 78
belaran@964 79 </sect2>
belaran@964 80 <sect2>
belaran@964 81 <title>Solaris</title>
belaran@964 82
belaran@964 83 <para>SunFreeWare, à <ulink url="http://www.saufreeware.com">http://www.saufreeware.com</ulink>, est une bonne source
belaran@964 84 pour trouver un vaste nombre de paquets précompilés pour 32 ou 64 bits
belaran@964 85 Intel et les architecture Sparc, dont les versions courantes de Mercurial.
belaran@964 86 </para>
belaran@964 87
belaran@964 88 </sect2>
belaran@964 89 <sect2>
belaran@964 90 <title>Mac OS X</title>
belaran@964 91
belaran@964 92 <para>Lee Cantey publie un installateur de Mercurial pour Mac OS X sur le site
belaran@964 93 <ulink url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>. Ce paquetage fonctionne sur les
belaran@964 94 architectures Intel- et PowerPC. Avant de vous en servir, vous devez
belaran@964 95 installer une version Universelle MacPython <citation>web:macpython</citation>. C'est
belaran@964 96 assez facile à faire : suivez simplement les instructions sur le site
belaran@964 97 de Lee.
belaran@964 98 </para>
belaran@964 99
belaran@964 100 <para>Il est aussi possible d'installer Mercurial en utilisant Fink ou MacPorts,
belaran@964 101 deux outils de gestion de paquetage libres pour Mac OS X. Si vous avez
belaran@964 102 Fink, utilisez <command>sudo fink install mercurial-py25</command>. Si vous avez
belaran@964 103 MacPorts, <command>sudo port install mercurial</command>.
belaran@964 104 </para>
belaran@964 105
belaran@964 106 </sect2>
belaran@964 107 <sect2>
belaran@964 108 <title>Windows</title>
belaran@964 109
belaran@964 110 <para>Lee Cantey publie aussi un installateur de Mercurial pour Windows sur le site
belaran@964 111 <ulink url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>. Ce paquetage n'a aucune dépendance
belaran@964 112 externe, il fonctionne <quote>tout court</quote>.
belaran@964 113 </para>
belaran@964 114
belaran@964 115 <note>
belaran@964 116 <para> La version de Windows de Mercurial ne convertie pas automatiquement
belaran@964 117 les retours chariot Windows et Unix. Si vous désirez partager votre
belaran@964 118 travail avec des utilisateurs Unix, vous devez faire un peu de configuration
belaran@964 119 supplémentaire. XXX En dire plus.
belaran@964 120 </para>
belaran@964 121 </note>
belaran@964 122
belaran@964 123 </sect2>
belaran@964 124 </sect1>
belaran@964 125 <sect1>
belaran@964 126 <title>Commencer à utiliser Mercurial</title>
belaran@964 127
belaran@964 128 <para>Pour commencer, nous utiliserons la commande <command role="hg-cmd">hg version</command> pour vérifier
belaran@964 129 si Mercurial est installé proprement. Les informations affichées sur la
belaran@964 130 version ne sont pas réellement importantes en soit, c'est surtout de savoir
belaran@964 131 si elles s'affichent qui nous intéresse.
belaran@964 132 <!-- &interaction.tour.version; -->
belaran@964 133 </para>
belaran@964 134
belaran@964 135 <sect2>
belaran@964 136 <title>L'aide intégrée</title>
belaran@964 137
belaran@964 138 <para>Mercurial fournit un système d'aide intégré, ce qui est inestimable quand
belaran@964 139 vous vous retrouvez coincé à essayer de vous rappeler comment lancer telle
belaran@964 140 ou telle commande.
belaran@964 141 Si c'est le cas, exécutez simplement <command role="hg-cmd">hg help</command>; il vous aidera à imprimer
belaran@964 142 une brève liste de commandes, avec une description de ce qu'elles font. Si vous
belaran@964 143 demandez de l'aide sur une commande spécifique (voir ci-dessous), il affichera
belaran@964 144 des informations plus détaillées.
belaran@964 145 <!-- &interaction.tour.help; -->
belaran@964 146 Pour un niveau d'informations encore plus détaillées (ce dont vous aurez rarement
belaran@964 147 besoin), exécuter <command role="hg-cmd">hg help <option role="hg-opt-global">-v</option></command>. L'option <option role="hg-opt-global">-v</option> est
belaran@964 148 l'abréviation de <option role="hg-opt-global">--verbose</option>, et indique à Mercurial d'afficher plus
belaran@964 149 d'informations que d'habitude.
belaran@964 150 </para>
belaran@964 151
belaran@964 152 </sect2>
belaran@964 153 </sect1>
belaran@964 154 <sect1>
belaran@964 155 <title>Travailler avec un dépôt</title>
belaran@964 156
belaran@964 157 <para>Avec Mercurial, tout se déroule au sein du <emphasis>dépôt</emphasis>\footnote{NdT: Dépôt est
belaran@964 158 la traduction que j'ai retenue pour tout l'ouvrage du terme anglais \textit{repository}}.
belaran@964 159 Le dépôt d'un projet contient tous les fichiers qui <quote>appartiennent</quote> au projet.
belaran@964 160 </para>
belaran@964 161
belaran@964 162 <para>Il n'y a rien de particulièrement magique au sujet de ce dépôt, c'est
belaran@964 163 simplement une arborescence sur votre système de fichiers que Mercurial
belaran@964 164 traite de manière spéciale. Vous pouvez renommer ou effacer ce répertoire
belaran@964 165 à n'importe quel moment, en utilisant la ligne de commande ou votre
belaran@964 166 explorateur de fichiers.
belaran@964 167 </para>
belaran@964 168
belaran@964 169 <sect2>
belaran@964 170 <title>Faire une copie locale de votre dépôt</title>
belaran@964 171
belaran@964 172 <para><emphasis>Copier</emphasis> un dépôt est juste un peu spécial. Bien que vous
belaran@964 173 puissiez utiliser une commande habituelle de copie pour copier
belaran@964 174 votre dépôt, il vaut mieux utiliser une commande fournie par
belaran@964 175 Mercurial. Cette commande est appelée <command role="hg-cmd">hg clone</command>, car elle
belaran@964 176 crée une copie identique à un dépôt existant.
belaran@964 177 <!-- &interaction.tour.clone; -->
belaran@964 178 Si votre opération de clonage réussit, vous devriez maintenant
belaran@964 179 avoir un répertoire local appelé <filename class="directory">hello</filename>. Ce répertoire
belaran@964 180 contiendra quelques fichiers.
belaran@964 181 <!-- &interaction.tour.ls; -->
belaran@964 182 Ces fichiers ont le même contenu et historique dans votre dépôt
belaran@964 183 qu'ils ont dans le dépôt que vous avez cloné.
belaran@964 184 </para>
belaran@964 185
belaran@964 186 <para>Chaque dépôt Mercurial est complet, autonome et indépendant. Il
belaran@964 187 contient sa propre copie privée des fichiers du projet et de leur
belaran@964 188 historique. Le clone d'un dépôt se souvient de la localisation du
belaran@964 189 dépôt à partir duquel il a été clôné, mais il ne communique pas avec
belaran@964 190 ce dernier, ou un autre, à moins que vous ne lui demandiez.
belaran@964 191 </para>
belaran@964 192
belaran@964 193 <para>Ce que tout ceci signifie pour le moment est que nous sommes libres
belaran@964 194 d'expérimenter avec ce dépôt, confiants dans le fait qu'il s'agit d'un
belaran@964 195 <quote>bac à sable</quote> qui n'affectera personne d'autre.
belaran@964 196 </para>
belaran@964 197
belaran@964 198 </sect2>
belaran@964 199 <sect2>
belaran@964 200 <title>Quel est le contenu d'un dépôt ?</title>
belaran@964 201
belaran@964 202 <para>Prêtons plus attention un instant au contenu d'un dépôt. Nous voyons
belaran@964 203 qu'il contient un répertoire nommé <filename class="directory">.hg</filename>. C'est ici que Mercurial
belaran@964 204 conserve toutes ses métadonnées.
belaran@964 205 <!-- &interaction.tour.ls-a; -->
belaran@964 206 </para>
belaran@964 207
belaran@964 208 <para>Le contenu du répertoire <filename class="directory">.hg</filename> et ses sous répertoires sont les
belaran@964 209 seuls propres à Mercurial. Tous les autres fichiers et répertoires dans
belaran@964 210 le dépôt sont à vous, et vous pouvez en faire ce que vous voulez.
belaran@964 211 </para>
belaran@964 212
belaran@964 213 <para>Pour introduire un peu de terminologie, le répertoire <filename class="directory">.hg</filename> est
belaran@964 214 un <quote>vrai</quote> dépôt, et tous les fichiers et les répertoires qui coexistent
belaran@964 215 avec lui, sont désignés sous le nom <emphasis>espace de travail</emphasis>\footnote{NdT:
belaran@964 216 \textit{working directory}}. Une manière facile de se rappeler cette
belaran@964 217 distinction est de retenir que le <emphasis>dépôt</emphasis> contient l'<emphasis>historique</emphasis>
belaran@964 218 de votre projet, alors que l'<emphasis>espace de travail</emphasis> contient une \emph{copie
belaran@964 219 ponctuelle}\footnote{NdT: Ce terme est une traduction du terme anglais
belaran@964 220 \textit{snapshot}. Il est traduit ici pour faciliter la lecture, mais ne sera
belaran@964 221 plus traduit par la suite.} de votre projet à un certain point de son
belaran@964 222 historique.
belaran@964 223 </para>
belaran@964 224
belaran@964 225 </sect2>
belaran@964 226 </sect1>
belaran@964 227 <sect1>
belaran@964 228 <title>Une ballade dans l'historique</title>
belaran@964 229
belaran@964 230 <para>Une des premières choses que vous aurez envie de faire avec un nouveau
belaran@964 231 dépôt, sera de comprendre son historique. La commande <command role="hg-cmd">hg log</command> vous
belaran@964 232 donne une vue de l'historique.
belaran@964 233 <!-- &interaction.tour.log; -->
belaran@964 234 Par défaut, cette commande affiche à l'écran un bref paragraphe pour chaque
belaran@964 235 révision enregistrée pour ce projet. Dans la terminologie de Mercurial, nous
belaran@964 236 appelons chacun de ces évènements enregistrés un <emphasis>changeset</emphasis>, parce
belaran@964 237 qu'il contient un ensemble de modifications sur plusieurs fichiers.
belaran@964 238 </para>
belaran@964 239
belaran@964 240 <para>La commande <command role="hg-cmd">hg log</command> affiche ainsi ces informations:
belaran@964 241 </para>
belaran@964 242 <itemizedlist>
belaran@964 243 <listitem><para><literal>changeset</literal>: Ce champ contient un nombre, séparé par deux points
belaran@964 244 (:), d'une chaine hexadécimale. Il s'agit en fait d'<emphasis>identifiants</emphasis>
belaran@964 245 d'un \textit{changeset}. Il y a deux identifiants car le numéro de
belaran@964 246 la révision est plus court et plus à facile à saisir qu'une séquence
belaran@964 247 hexadécimale.
belaran@964 248 </para>
belaran@964 249 </listitem>
belaran@964 250 <listitem><para><literal>user</literal>: L'identité de la personne qui a créée ce %%% laisser le terme anglais car il sera affiché
belaran@964 251 \textit{changeset}. C'est un champ libre de forme, mais la plupart du
belaran@964 252 temps il contient le nom et l'email de la personne.
belaran@964 253 </para>
belaran@964 254 </listitem>
belaran@964 255 <listitem><para><literal>date</literal>: La date et l'heure à laquelle le \textit{changeset}
belaran@964 256 a été créé, ainsi que le \textit{fuseau horaire} dans laquelle il a été créé. %%%TODO: Translate 'timezone' properly : FUSEAU
belaran@964 257 (La date et l'heure sont locales à ce \textit{fuseau}, elles indiquent
belaran@964 258 donc quelle date et heure il était pour la personne qui a créé ce %%%TODO: je suppose (quelle "heure") OUI
belaran@964 259 \textit{changeset}.)
belaran@964 260 </para>
belaran@964 261 </listitem>
belaran@964 262 <listitem><para><literal>résumé</literal>: La première du message que le créateur a associé à
belaran@964 263 son \textit{changeset} pour le décrire.
belaran@964 264 </para>
belaran@964 265 </listitem></itemizedlist>
belaran@964 266
belaran@964 267 <para>Par défaut, la commande <command role="hg-cmd">hg log</command> n'affiche qu'un résumé, il manque
belaran@964 268 beaucoup de détails.
belaran@964 269 </para>
belaran@964 270
belaran@964 271 <para>La figure <xref linkend="fig:tour-basic:history"/> fournit une représentation graphique
belaran@964 272 de l'historique du dépôt <filename class="directory">hello</filename>, pour rendre plus facile de voir
belaran@964 273 dans quelle direction l'historique se <quote>déroule</quote>\footnote{NdT: \textit{flowing in}.}.
belaran@964 274 Nous reviendrons régulièrement sur cette représentation dans ce chapitre et
belaran@964 275 ceux qui suivent.
belaran@964 276 </para>
belaran@964 277
belaran@964 278 <informalfigure>
belaran@964 279
belaran@964 280 <para> <mediaobject><imageobject><imagedata fileref="tour-history"/></imageobject><textobject><phrase>XXX add text</phrase></textobject></mediaobject>
belaran@964 281 <caption><para>Représentation graphique du dépôt <filename class="directory">hello</para></caption> </filename>
belaran@964 282 \label{fig:tour-basic:history}
belaran@964 283 </para>
belaran@964 284 </informalfigure>
belaran@964 285
belaran@964 286 <sect2>
belaran@964 287 <title>Changesets, révisions, et discuter avec les autres</title>
belaran@964 288 <para>%%% je propose "colaboration"
belaran@964 289 </para>
belaran@964 290
belaran@964 291 <para>Comme l'anglais est réputé pour être un langage maladroit, et que l'informatique
belaran@964 292 est la source de bien des erreurs de terminologies (pourquoi utiliser un
belaran@964 293 seul terme quand quatre feront l'affaire ?), la gestion de version a une
belaran@964 294 variété de mots et de phrases qui veulent dire la même chose. Si vous
belaran@964 295 discutez d'historique de Mercurial avec d'autres personnes,
belaran@964 296 %%%TODO: ça ne veut rien dire: il faut supprimer une des personnes : soit "quelqu'un",
belaran@964 297 % soit "à d'autres personnes"
belaran@964 298 vous constaterez que souvent le mot <quote>\textit{changeset}</quote> est contracté simplement
belaran@964 299 en <quote>change</quote> ou (à l'écrit) <quote>cset</quote>, et même parfois un
belaran@964 300 \textit{changeset} simplement <quote>révision</quote>, abrégé en <quote>rev</quote>.
belaran@964 301 </para>
belaran@964 302
belaran@964 303 <para>Bien que le <emphasis>mot</emphasis> que vous utilisez pour désigner le concept de
belaran@964 304 \textit{changeset} importe peu, l'<emphasis>identifiant</emphasis> que vous utilisez
belaran@964 305 pour désigner un <emphasis>changeset</emphasis> \textit{spécifique} a une grande
belaran@964 306 importance. Rappelez vous que le champ \textit{changeset} affiché par la
belaran@964 307 commande <command role="hg-cmd">hg log</command> identifie un \textit{changeset} à la fois avec
belaran@964 308 un numéro de révision et une séquence hexadécimale.
belaran@964 309 </para>
belaran@964 310
belaran@964 311 <itemizedlist>
belaran@964 312 <listitem><para>Le numéro de révision est <emphasis>seulement valable dans ce dépôt</emphasis>,
belaran@964 313 </para>
belaran@964 314 </listitem>
belaran@964 315 <listitem><para>alors que la séquence hexadécimale est un \emph{identifiant
belaran@964 316 permanent, et invariant } qui pourra toujours être associé au
belaran@964 317 \textit{changeset} exact de <emphasis>chaque</emphasis> copie de votre dépôt.
belaran@964 318 </para>
belaran@964 319 </listitem></itemizedlist>
belaran@964 320
belaran@964 321 <para>La distinction est importante. Si vous envoyez un email à quelqu'un en
belaran@964 322 parlant de la <quote>révision 33</quote>, il est très probable que sa révision 33
belaran@964 323 <emphasis>ne sera pas la même</emphasis> que la votre. La raison de ceci est que le
belaran@964 324 numéro de révision dépend de l'ordre dans lequel les modifications sont
belaran@964 325 arrivées dans le dépôt, et il n'y a aucune garantie que les mêmes changements
belaran@964 326 soient arrivés dans le même ordre dans différents dépôts. Trois modifications
belaran@964 327 $a,b,c$ peuvent aisément apparaitre dans un dépôt comme $0,1,2$, et dans
belaran@964 328 un autre comme $1,0,2$.
belaran@964 329 </para>
belaran@964 330
belaran@964 331 <para>Mercurial utilise les numéros de révision uniquement comme des raccourcis
belaran@964 332 pratiques. Si vous devez discuter d'un \textit{changeset} avec quelqu'un,
belaran@964 333 ou identifer un \textit{changeset} pour une quelquonque %%%TODO: our : "pour" ou "ou"
belaran@964 334 raison (par exemple, un rapport de \textit{bug}), utilisez la séquence
belaran@964 335 hexadécimale.
belaran@964 336 </para>
belaran@964 337
belaran@964 338 </sect2>
belaran@964 339 <sect2>
belaran@964 340 <title>Afficher une révision spécifique</title>
belaran@964 341
belaran@964 342 <para>Pour réduire la sortie de <command role="hg-cmd">hg log</command> à une seule révision, utilisez
belaran@964 343 l'option <option role="hg-opt-log">-r</option> (ou <option role="hg-opt-log">--rev</option>). Vous pouvez utiliser
belaran@964 344 le numéro de révision ou la séquence hexadécimale comme identifiant, et
belaran@964 345 demander autant de révisions que vous le souhaitez.
belaran@964 346 <!-- &interaction.tour.log-r; -->
belaran@964 347 </para>
belaran@964 348
belaran@964 349 <para>Si vous voulez voir l'historique de plusieurs révisions sans avoir à
belaran@964 350 les énumérer, vous pouvez utiliser la <emphasis>\textit{range notation</emphasis>}
belaran@964 351 \footnote{NdT: Il n'est pas aisé de traduire ce terme, donc je le %%%TODO : intervalle de numérotation ?
belaran@964 352 laisse en anglais} qui vous permet d'exprimer l'idée <quote>je veux toutes
belaran@964 353 les révisions entre $a$ et $b$, inclus</quote>.
belaran@964 354 <!-- &interaction.tour.log.range; -->
belaran@964 355 Mercurial respecte aussi l'ordre dans lequel vous spécifiez les
belaran@964 356 révisions, ainsi <command role="hg-cmd">hg log -r 2:4</command> affichera $2,3,4$ alors que
belaran@964 357 <command role="hg-cmd">hg log -r 4:2</command> affichera $4,3,2$.
belaran@964 358 </para>
belaran@964 359
belaran@964 360 </sect2>
belaran@964 361 <sect2>
belaran@964 362 <title>Informations détaillées</title>
belaran@964 363
belaran@964 364
belaran@964 365 <para>Le résumé affiché par <command role="hg-cmd">hg log</command> est suffisant si vous savez déjà ce %%%TODO: je pense que le premier "si" est de trop : exact
belaran@964 366 que vous cherchez. En revanche, vous aurez probablement besoin de voir une description
belaran@964 367 complète du changement, ou une liste des fichiers modifiés si vous
belaran@964 368 cherchez à déterminer qu'un \textit{changeset} est bien celui que vous%%%TODO: les propositions sont mal construites : après un "si...." il faut une proposition sans "si... donc ici : "si ... recherchez", ben quoi ?
belaran@964 369 recherchez. L'option \hgopt{-v} de la commande <command role="hg-cmd">hg log</command> (ou
belaran@964 370 \hgopt{--verbose}) vous donne ces informations supplémentaires.
belaran@964 371 <!-- &interaction.tour.log-v; -->
belaran@964 372 </para>
belaran@964 373
belaran@964 374 <para>Si vous voulez voir à la fois la description et le contenu d'une
belaran@964 375 modification, ajouter l'option <option role="hg-opt-log">-p</option> (ou <option role="hg-opt-log">--patch</option>).
belaran@964 376 Ceci affiche le contenu d'une modification comme un <emphasis>diff unifié</emphasis>
belaran@964 377 \footnote{NdT: \textit{unified diff}} (si vous n'avez jamais vu de diff
belaran@964 378 unifié avant, consultez la section <xref linkend="sec:mq:patch"/> pour un rapide
belaran@964 379 survol).
belaran@964 380 </para>
belaran@964 381
belaran@964 382 <para><!-- &interaction.tour.log-vp; -->
belaran@964 383 </para>
belaran@964 384
belaran@964 385 </sect2>
belaran@964 386 </sect1>
belaran@964 387 <sect1>
belaran@964 388 <title>Tout sur les options de commandes</title>
belaran@964 389
belaran@964 390
belaran@964 391 <para>Avant d'aller plus loin sur le fonctionnement des commandes de Mercurial,
belaran@964 392 étudions un moment comment elles fonctionnent de manière générale. Vous
belaran@964 393 trouverez ça probablement utile pour la suite de notre parcours.
belaran@964 394 </para>
belaran@964 395
belaran@964 396 <para>Mercurial utilise une approche directe et cohérente pour interpréter %%%TODO: une manière d'approche ?
belaran@964 397 les options que vous passez aux commandes. Il suit une convention commune
belaran@964 398 à la plupart des systèmes Unix et Linux modernes.
belaran@964 399 </para>
belaran@964 400
belaran@964 401 <itemizedlist>
belaran@964 402 <listitem><para>Chaque option a un nom complet. Par exemple, comme nous l'avons déjà
belaran@964 403 vu, la commande <command role="hg-cmd">hg log</command> accepte l'option <option role="hg-opt-log">--rev</option>.%%%TODO: commande ou command e\hgcmd...?
belaran@964 404 </para>
belaran@964 405 </listitem>
belaran@964 406 <listitem><para>La plupart des options disposent de noms abrégés. Aussi, au lieu d'utiliser
belaran@964 407 <option role="hg-opt-log">--rev</option>, vous pouvez utiliser <option role="hg-opt-log">-r</option>. (Les options qui
belaran@964 408 n'ont pas de noms abrégés sont généralement rarement utilisées, pour cette raison).
belaran@964 409 </para>
belaran@964 410 </listitem>
belaran@964 411 <listitem><para>Les noms complets commencent par deux tirets (i.e. <option role="hg-opt-log">--rev</option>),
belaran@964 412 alors que les options courtes commencent avec un seul (i.e. <option role="hg-opt-log">-r</option>).
belaran@964 413 </para>
belaran@964 414 </listitem>
belaran@964 415 <listitem><para>Les noms des options sont cohérents entre les commandes. Par exemple,
belaran@964 416 chaque commande qui accepte un \textit{changeset ID} ou un numéro de révision
belaran@964 417 accepte aussi <option role="hg-opt-log">-r</option> et <option role="hg-opt-log">--rev</option> comme arguments.
belaran@964 418 %TODO: Small mistake here, shouldn't have log here... shouldn't it ?
belaran@964 419 </para>
belaran@964 420 </listitem></itemizedlist>
belaran@964 421
belaran@964 422 <para>Dans les exemples de ce livre, j'utilise les noms abrégés plutôt que les noms
belaran@964 423 complets. Ceci est une préférence personnelle, pas une recommandation.
belaran@964 424 </para>
belaran@964 425
belaran@964 426 <para>La plupart des commandes qui affichent une quelconque sortie à l'écran,
belaran@964 427 afficheront davantage avec l'option <option role="hg-opt-global">-v</option> (ou <option role="hg-opt-global">--verbose</option>), et
belaran@964 428 moins avec l'option <option role="hg-opt-global">-q</option> (ou <option role="hg-opt-global">--quiet</option>).
belaran@964 429 </para>
belaran@964 430
belaran@964 431 </sect1>
belaran@964 432 <sect1>
belaran@964 433 <title>Faire et vérifier des modifications</title>
belaran@964 434
belaran@964 435 <para>Maintenant que nous avons une bonne idée des commandes pour consulter
belaran@964 436 l'historique de Mercurial, regardons comment faire des modifications et
belaran@964 437 les examiner.
belaran@964 438 </para>
belaran@964 439
belaran@964 440
belaran@964 441 <para>La première chose que nous allons faire c'est isoler notre expérience dans
belaran@964 442 un dépôt à part. Nous allons utiliser la commande <command role="hg-cmd">hg clone</command>, mais nous
belaran@964 443 n'avons pas besoin de faire une copie de dépôt distant. Comme nous avons
belaran@964 444 déjà une copie locale, nous pouvons juste faire un clone de celle-ci à la
belaran@964 445 place. C'est beaucoup plus rapide que de faire une copie à travers le
belaran@964 446 réseau, et un dépôt cloné localement prend également moins d'espace disque.
belaran@964 447 </para>
belaran@964 448
belaran@964 449 <para><!-- &interaction.tour.reclone; -->
belaran@964 450 </para>
belaran@964 451
belaran@964 452 <para>On notera au passage qu'il est souvent considéré comme une bonne pratique
belaran@964 453 de conserver une copie <quote>immaculée</quote> du dépôt distant, à partir de laquelle
belaran@964 454 vous pourrez faire des copies locales temporaires pour créer des <quote>bacs à
belaran@964 455 sable</quote> pour chaque tâche sur laquelle vous souhaitez travailler. Ceci vous
belaran@964 456 permet de travailler sur plusieurs choses en parallèle, chacune isolée les
belaran@964 457 unes des autres en attendant que ces tâches soient finies et que vous soyez
belaran@964 458 prêt à les réintégrer. Parce que les copies locales sont peu coûteuses, il
belaran@964 459 est très rapide de créer ou détruire des dépôts dès que vous en avez besoin.
belaran@964 460 </para>
belaran@964 461
belaran@964 462 <para>%% Note: la dernière phrase n'est pas une traduction littérale, mais je
belaran@964 463 %% pense qu'elle exprime plus clairement en français ce que veut dire son
belaran@964 464 %% équivalent anglais. : OUI
belaran@964 465 </para>
belaran@964 466
belaran@964 467 <para>Dans notre dépôt <filename class="directory">my-hello</filename>, nous avons un fichier <filename>hello.c</filename>
belaran@964 468 qui contient le classique programme <quote>hello, world</quote>. Nous allons utiliser
belaran@964 469 l'ancienne et vénérable commande <command>sed</command> pour l'éditer afin qu'il
belaran@964 470 affiche une seconde ligne à l'écran. (J'utilise <command>sed</command> seulement parce
belaran@964 471 qu'il est ainsi facile d'écrire des exemples sous forme de script. Comme
belaran@964 472 vous n'avez pas ces contraintes, vous n'utiliserez probablement pas <command>sed</command>
belaran@964 473 mais plutôt votre éditeur de texte favori).
belaran@964 474 </para>
belaran@964 475
belaran@964 476 <para><!-- &interaction.tour.sed; -->
belaran@964 477 </para>
belaran@964 478
belaran@964 479 <para>La commande <command role="hg-cmd">hg status</command> de Mercurial nous dira de quels fichiers Mercurial
belaran@964 480 s'occupe au sein de ce dépôt.
belaran@964 481 <!-- &interaction.tour.status; -->
belaran@964 482 La commande <command role="hg-cmd">hg status</command> n'affiche rien sur la sortie pour quelques fichiers
belaran@964 483 mais une ligne commence par <quote><literal>M</literal></quote> for <filename>hello.c</filename>. À moins que
belaran@964 484 vous ne lui indiquiez de le faire, <command role="hg-cmd">hg status</command> n'affichera aucune sortie
belaran@964 485 pour les fichiers qui n'ont pas été modifiés.
belaran@964 486 </para>
belaran@964 487
belaran@964 488 <para>Le caractère <quote><literal>M</literal></quote> indique que Mercurial a remarqué que nous avions
belaran@964 489 modifié le fichier <filename>hello.c</filename>. Nous n'avons pas besoin d'<emphasis>informer</emphasis>
belaran@964 490 Mercurial que nous allons modifier un fichier avant de le faire, ou que nous
belaran@964 491 venons de le modifier, il est capable de s'en rendre compte tout seul.
belaran@964 492 </para>
belaran@964 493
belaran@964 494 <para>C'est pratique de savoir que nous avons modifié <filename>hello.c</filename>, mais il
belaran@964 495 serait encore plus pratique de savoir ce que nous avons modifié exactement. Pour
belaran@964 496 cela, nous avons la commande <command role="hg-cmd">hg diff</command>.
belaran@964 497 </para>
belaran@964 498
belaran@964 499 <para><!-- &interaction.tour.diff; -->
belaran@964 500 </para>
belaran@964 501
belaran@964 502 </sect1>
belaran@964 503 <sect1>
belaran@964 504 <title>Enregister les modifications dans un nouveau \textit{changeset}</title>
belaran@964 505
belaran@964 506 <para>Nous pouvons modifier des fichiers, compiler et tester nos modifications,
belaran@964 507 et utiliser les commandes <command role="hg-cmd">hg status</command> et <command role="hg-cmd">hg diff</command> pour voir les
belaran@964 508 modifications effectuées, jusqu'au moment où nous serons assez satisfaits
belaran@964 509 pour décider d'enregistrer notre travail dans un \textit{changeset}.
belaran@964 510 </para>
belaran@964 511
belaran@964 512 <para>La commande <command role="hg-cmd">hg commit</command> vous laisse créer un nouveau \textit{changeset},
belaran@964 513 nous désignerons généralement cette opération par <quote>faire un commit</quote> ou
belaran@964 514 <quote>commiter</quote>\footnote{NdT: De mon expérience, la plupart des francophones
belaran@964 515 utilisent régulièrement, à l'oral, cette expression, mais bien évidement
belaran@964 516 il ne s'agit pas d'un terme de terminologie correcte, ni même français.}
belaran@964 517 </para>
belaran@964 518
belaran@964 519 <sect2>
belaran@964 520 <title>Définir le nom d'utilisateur</title>
belaran@964 521
belaran@964 522 <para>Quand vous exécutez la commande <command role="hg-cmd">hg commit</command> pour la première fois, elle
belaran@964 523 n'est pas garantie de réussir. Mercurial enregistre votre nom et votre
belaran@964 524 adresse avec chaque modification que vous effectuez, de manière à ce que
belaran@964 525 vous soyez capable (ou d'autres le soient) de savoir qui a fait quelle
belaran@964 526 modification. Mercurial essaye automatiquement de découvrir un nom
belaran@964 527 d'utilisateur qui ait un minimum de sens pour effectuer l'opération
belaran@964 528 de \textit{commit} avec. Il va essayer chacune des méthodes suivantes,
belaran@964 529 dans l'ordre:
belaran@964 530 </para>
belaran@964 531 <orderedlist>
belaran@964 532 <listitem><para>Si vous spécifiez l'option <option role="hg-opt-commit">-u</option> avec la commande
belaran@964 533 <command role="hg-cmd">hg commit</command>, suivi d'un nom d'utilisateur, ceci aura toujours la
belaran@964 534 priorité sur les autres méthodes ci dessous.
belaran@964 535 </para>
belaran@964 536 </listitem>
belaran@964 537 <listitem><para>Si vous avez défini une variable d'environnement <envar>HGUSER</envar>,
belaran@964 538 c'est cette valeur qui est alors utilisée.
belaran@964 539 </para>
belaran@964 540 </listitem>
belaran@964 541 <listitem><para>Si vous créez un fichier nommé <filename role="special">.hgrc</filename> dans votre
belaran@964 542 répertoire \textit{home}, avec une entrée <envar role="rc-item-ui">username</envar>,
belaran@964 543 c'est la valeur associée qui sera utilisée. Pour voir à quoi
belaran@964 544 ressemble le contenu de ce fichier regardez la
belaran@964 545 section <xref linkend="sec:tour-basic:username"/> ci-dessous.
belaran@964 546 </para>
belaran@964 547 </listitem>
belaran@964 548 <listitem><para>Si vous avez défini une variable d'environnement <envar>EMAIL</envar>
belaran@964 549 celle ci sera utilisée ensuite.
belaran@964 550 </para>
belaran@964 551 </listitem>
belaran@964 552 <listitem><para>Enfin, Mercurial interrogera votre système pour trouver votre
belaran@964 553 nom d'utilisateur local ainsi que le nom de la machine hôte, et il
belaran@964 554 fabriquera un nom d'utilisateur à partir de ces données. Comme il arrive
belaran@964 555 souvent que ce genre de noms soit totalement inutile, il vous
belaran@964 556 préviendra en affichant un message d'avertissement.
belaran@964 557 </para>
belaran@964 558 </listitem></orderedlist>
belaran@964 559
belaran@964 560 <para>Si tous ces mécanismes échouent, Mercurial n'exécutera pas la commande,
belaran@964 561 affichant un message d'erreur. Dans ce cas, il ne vous laissera pas
belaran@964 562 effectuer de \textit{commit} tant que vous n'aurez pas défini un nom
belaran@964 563 d'utilisateur.
belaran@964 564 </para>
belaran@964 565
belaran@964 566 <para>Vous devriez penser à utiliser la variable d'environement <envar>HGUSER</envar>
belaran@964 567 et l'option <option role="hg-opt-commit">-u</option> comme moyen pour \emph{changer le nom
belaran@964 568 d'utilisateur} par défaut. Pour une utilisation normale, la manière la plus
belaran@964 569 simple et robuste d'opérer est de créer un fichier <filename role="special">.hgrc</filename>,
belaran@964 570 voir ci-dessous pour les détails à ce sujet.
belaran@964 571 </para>
belaran@964 572
belaran@964 573 <sect3>
belaran@964 574 <title>Créer un fichier de configuration pour Mercurial</title>
belaran@964 575 <para>\label{sec:tour-basic:username}
belaran@964 576 </para>
belaran@964 577
belaran@964 578 <para>Pour définir un nom d'utilisateur, utilisez votre éditeur de texte favori
belaran@964 579 pour créer un fichier <filename role="special">.hgrc</filename> dans votre répertoire \textit{home}.
belaran@964 580 Mercurial va utiliser ce fichier pour retrouver votre configuration personnelle.
belaran@964 581 Le contenu initial devrait ressembler à ceci:
belaran@964 582 </para>
belaran@964 583 <programlisting>
belaran@964 584 <para> # This is a Mercurial configuration file.
belaran@964 585 [ui]
belaran@964 586 username = Firstname Lastname &lt;email.address@domain.net&gt;
belaran@964 587 </para>
belaran@964 588 </programlisting>
belaran@964 589 <para>La ligne avec <literal>[ui]</literal> commence une <emphasis>section</emphasis> du fichier de
belaran@964 590 configuration, ainsi la ligne <quote><literal>username = ...</literal></quote> signifie <quote>
belaran@964 591 définir la valeur de l'élément <literal>username</literal> dans la section
belaran@964 592 <literal>ui</literal></quote>. Une section continue jusqu'à ce qu'une nouvelle
belaran@964 593 commence, ou que la fin du fichier soit atteinte. Mercurial ignore
belaran@964 594 les lignes vides et traite tout texte situé à la suite d'un
belaran@964 595 <quote><literal>#</literal></quote> jusqu'à la fin de la ligne comme un commentaire.
belaran@964 596 </para>
belaran@964 597
belaran@964 598 </sect3>
belaran@964 599 <sect3>
belaran@964 600 <title>Choisir un nom d'utilisateur</title>
belaran@964 601
belaran@964 602 <para>Vous pouvez utiliser n'importe quelle valeur pour votre <literal>username</literal>,
belaran@964 603 car cette information est destinée à d'autres personnes et non à être
belaran@964 604 interprétée par Mercurial. La convention que la plupart des personnes
belaran@964 605 &lt;&lt;&lt;&lt;&lt;&lt;&lt; local
belaran@964 606 suivent est d'utiliser leurs noms suivies de leurs adresses emails,
belaran@964 607 comme montrée ci-dessus:
belaran@964 608 </para>
belaran@964 609
belaran@964 610 <note>
belaran@964 611 <para> Le mécanisme interne du serveur \textit{web} intégré à Mercurial,
belaran@964 612 masque les adresses emails, pour rendre plus difficile leurs
belaran@964 613 récupérations par les outils utilisés par les \textit{spammmers}.
belaran@964 614 Ceci réduit la probabilité que de recevoir encore plus de
belaran@964 615 \textit{spam} si vous vous publiez un dépôt sur internet.
belaran@964 616 </para>
belaran@964 617 </note>
belaran@964 618
belaran@964 619 </sect3>
belaran@964 620 </sect2>
belaran@964 621 <sect2>
belaran@964 622 <title>Rédiger un message de \textit{commit}</title>
belaran@964 623
belaran@964 624 <para>Lorsqu'on effectue une opération de \textit{commit}, Mercurial
belaran@964 625 lance automatiquement un éditeur de texte pour permettre de saisir
belaran@964 626 un message qui décrira les modifications effectuées dans ce
belaran@964 627 \textit{changeset}. Ce message est nommé le \emph{message de
belaran@964 628 \textit{commit}}. Ce sera un enregistrement pour tout lecteur
belaran@964 629 expliquant le pourquoi et le comment de vos modifications, et il sera
belaran@964 630 affiché par la commande <command role="hg-cmd">hg log</command>.
belaran@964 631 <!-- &interaction.tour.commit; -->
belaran@964 632 </para>
belaran@964 633
belaran@964 634 <para>L'éditeur que la commande <command role="hg-cmd">hg commit</command> déclenche ne contiendra
belaran@964 635 qu'une ligne vide suivi d'un certain nombre de lignes commençant
belaran@964 636 par <quote><literal>HG:</literal></quote>.
belaran@964 637 </para>
belaran@964 638 <programlisting>
belaran@964 639 <para> <emphasis>empty line</emphasis>
belaran@964 640 HG: changed hello.c
belaran@964 641 </para>
belaran@964 642 </programlisting>
belaran@964 643 <para>Mercurial ignore les lignes qui commencent avec <quote><literal>HG:</literal></quote>, il
belaran@964 644 ne les utilise que pour nous indiquer quels fichiers modifiés il se
belaran@964 645 prépare à \textit{commiter}. Modifier ou effacer ces lignes n'a
belaran@964 646 aucune conséquence sur l'opération de \textit{commit}.
belaran@964 647 </para>
belaran@964 648
belaran@964 649 </sect2>
belaran@964 650 <sect2>
belaran@964 651 <title>Rédiger un message \textit{approprié}</title>
belaran@964 652
belaran@964 653 <para>Comme <command role="hg-cmd">hg log</command> n'affiche que la première ligne du message de
belaran@964 654 \textit{commit} par défaut, il est souvent considéré comme une bonne
belaran@964 655 pratique de rédiger des messages de \textit{commit} qui tiennent
belaran@964 656 sur une seule ligne. Voilà un exemple concret de message de
belaran@964 657 \textit{commit} qui <emphasis>ne suit pas</emphasis> cette directive, et qui a donc
belaran@964 658 un résumé peu lisible.
belaran@964 659 </para>
belaran@964 660
belaran@964 661 <programlisting>
belaran@964 662 <para> changeset: 73:584af0e231be
belaran@964 663 user: Censored Person &lt;censored.person@example.org&gt;
belaran@964 664 date: Tue Sep 26 21:37:07 2006 -0700
belaran@964 665 summary: include buildmeister/commondefs. Add an exports and install
belaran@964 666 </para>
belaran@964 667 </programlisting>
belaran@964 668
belaran@964 669 <para>A ce sujet, il faut noter qu'il n'existe pas de règle absolue dans ce
belaran@964 670 domaine. Mercurial lui-même n'interprète pas les contenus des messages
belaran@964 671 de \textit{commit}, ainsi votre projet est libre de concevoir différentes
belaran@964 672 politiques de mise en page des messages.
belaran@964 673 </para>
belaran@964 674
belaran@964 675 <para>Ma préférence personnelle va au message court, mais informatif, qui offre
belaran@964 676 des précisions supplémentaires par rapport à ce que pourrait m'apprendre une commande
belaran@964 677 <command role="hg-cmd">hg log --patch</command>.
belaran@964 678 </para>
belaran@964 679
belaran@964 680 </sect2>
belaran@964 681 <sect2>
belaran@964 682 <title>Annuler un \textit{commit}</title>
belaran@964 683
belaran@964 684 <para>Si, en rédigeant le message, vous décidez que finalement vous ne
belaran@964 685 voulez pas effectuer ce \textit{commit}, il suffit de quitter simplement
belaran@964 686 l'éditeur sans sauver. Ceci n'aura aucune conséquence sur le dépôt ou
belaran@964 687 les fichiers de l'espace de travail.
belaran@964 688 </para>
belaran@964 689
belaran@964 690 <para>Si vous exécuter la commande <command role="hg-cmd">hg commit</command> sans aucun argument, elle
belaran@964 691 enregistre toutes les modifications que vous avez faites, comme le montre
belaran@964 692 les commandes <command role="hg-cmd">hg status</command> et <command role="hg-cmd">hg diff</command>.
belaran@964 693 </para>
belaran@964 694
belaran@964 695 </sect2>
belaran@964 696 <sect2>
belaran@964 697 <title>Admirer votre travail</title>
belaran@964 698
belaran@964 699 <para>Une fois que votre \textit{commit} est terminé, vous pouvez utiliser
belaran@964 700 la commande <command role="hg-cmd">hg tip</command> pour afficher le \textit{changeset} que nous
belaran@964 701 venons de créer. Cette commande produit une sortie à l'écran qui est
belaran@964 702 identique à celle du <command role="hg-cmd">hg log</command>, mais qui n'affiche que la dernière
belaran@964 703 révision du dépôt.
belaran@964 704 <!-- &interaction.tour.tip; -->
belaran@964 705 On fait couramment référence à la dernière révision du dépôt comme
belaran@964 706 étant la révision \textit{tip}, ou plus simplement le \textit{tip}.
belaran@964 707 </para>
belaran@964 708
belaran@964 709 </sect2>
belaran@964 710 </sect1>
belaran@964 711 <sect1>
belaran@964 712 <title>Partager ses modifications</title>
belaran@964 713
belaran@964 714 <para>Nous avons mentionné plus haut que les dépôts de Mercurial
belaran@964 715 sont autosuffisants. Ce qui signifie que le \textit{changeset}
belaran@964 716 que vous venez de créer existe seulement dans votre répertoire
belaran@964 717 <filename class="directory">my-hello</filename>. Étudions comment propager cette modification
belaran@964 718 dans d'autres dépôts.
belaran@964 719 </para>
belaran@964 720
belaran@964 721 <sect2>
belaran@964 722 <title>Récupérer les modifications d'autres dépôts</title>
belaran@964 723 <para>\label{sec:tour:pull}
belaran@964 724 </para>
belaran@964 725
belaran@964 726 <para>Pour commencer, construisons un clone de notre dépôt <filename class="directory">hello</filename>
belaran@964 727 qui ne contiendra pas le changement que nous venons d'effectuer. Nous
belaran@964 728 l'appellerons notre dépôt temporaire <filename class="directory">hello-pull</filename>.
belaran@964 729 </para>
belaran@964 730
belaran@964 731 <para><!-- &interaction.tour.clone-pull; -->
belaran@964 732 </para>
belaran@964 733
belaran@964 734 <para>Nous allons utiliser la commande <command role="hg-cmd">hg pull</command> pour apporter les
belaran@964 735 modifications depuis <filename class="directory">my-hello</filename> dans <filename class="directory">hello-pull</filename>.
belaran@964 736 Néanmoins, récupérer aveuglement des modifications depuis un dépôt
belaran@964 737 a quelque chose d'un peu effrayant. Mercurial propose donc une
belaran@964 738 commande <command role="hg-cmd">hg incoming</command> qui permet de savoir quelles modifications
belaran@964 739 la commande <command role="hg-cmd">hg pull</command> <emphasis>pourrait</emphasis> entraîner dans notre dépôt,
belaran@964 740 et ceci sans effectuer réellement de modification dessus.
belaran@964 741 <!-- &interaction.tour.incoming; -->
belaran@964 742 (Bien évidement, quelqu'un pourrait ajouter des modifications
belaran@964 743 supplémentaires sur le dépôt que nous étudions avec <command role="hg-cmd">hg incoming</command>,
belaran@964 744 avant que nous ayons effectué notre <command role="hg-cmd">hg pull</command>, avec comme
belaran@964 745 triste conséquence que nous aurons récupéré des modifications que
belaran@964 746 nous n'attendions pas.)
belaran@964 747 </para>
belaran@964 748
belaran@964 749 <para>Apporter les modifications rapatriées dans un dépôt se résume donc
belaran@964 750 à exécuter la commande <command role="hg-cmd">hg pull</command>, et préciser depuis quel dépôt
belaran@964 751 effectuer le <command role="hg-cmd">hg pull</command>.
belaran@964 752 <!-- &interaction.tour.pull; -->
belaran@964 753 </para>
belaran@964 754
belaran@964 755 <para>Comme vous le voyez avec une sortie avant et après de la commande
belaran@964 756 <command role="hg-cmd">hg tip</command>, nous avons réussi à récupérer aisément les modifications
belaran@964 757 dans notre dépôt. Il reste néanmoins quelque chose à faire avant de
belaran@964 758 placer ces modifications dans l'espace de travail.
belaran@964 759 </para>
belaran@964 760
belaran@964 761 </sect2>
belaran@964 762 <sect2>
belaran@964 763 <title>Mise à jour de l'espace de travail</title>
belaran@964 764
belaran@964 765 <para>Nous avons jusqu'à maintenant grossièrement définie la relation
belaran@964 766 entre un dépôt et un espace de travail. La commande <command role="hg-cmd">hg pull</command> que
belaran@964 767 nous avons exécutée dans la section <xref linkend="sec:tour:pull"/> a apporté
belaran@964 768 des modifications, que nous avons vérifiées, dans notre dépôt, mais
belaran@964 769 il n'y a aucune trace de ces modifications dans notre espace de travail.
belaran@964 770 En effet, <command role="hg-cmd">hg pull</command> ne touche pas (par défaut) à l'espace de
belaran@964 771 travail. C'est la commande <command role="hg-cmd">hg update</command> qui s'en charge.
belaran@964 772 <!-- &interaction.tour.update; -->
belaran@964 773 </para>
belaran@964 774
belaran@964 775 <para>Il peut sembler un peu étrange que la commande <command role="hg-cmd">hg pull</command> ne mette
belaran@964 776 pas à jour l'espace de travail automatiquement. Il y a en fait une
belaran@964 777 très bonne raison à cela : vous pouvez utilisez la commande
belaran@964 778 </para>
belaran@964 779
belaran@964 780 <para><command role="hg-cmd">hg update</command> pour mettre à jour votre espace de travail à l'état
belaran@964 781 dans lequel il était à <emphasis>n'importe quelle révision</emphasis> de l'historique
belaran@964 782 du dépôt. Si vous aviez un espace de travail contenant une ancienne
belaran@964 783 révision&emdash;pour chercher l'origine d'un \textit{bug}, par exemple&emdash;et
belaran@964 784 que vous effectuiez un <command role="hg-cmd">hg pull</command> qui mettrait à jour automatiquement
belaran@964 785 votre espace de travail, vous ne seriez probablement pas très satisfait.
belaran@964 786 </para>
belaran@964 787
belaran@964 788 <para>Néanmoins, comme les opérations de \textit{pull} sont très souvent
belaran@964 789 suivies d'un \textit{update}, Mercurial vous permet de combiner les
belaran@964 790 deux aisément en passant l'option <option role="hg-opt-pull">-u</option> à la commande
belaran@964 791 <command role="hg-cmd">hg pull</command>
belaran@964 792 </para>
belaran@964 793 <programlisting>
belaran@964 794 <para> hg pull -u
belaran@964 795 </para>
belaran@964 796 </programlisting>
belaran@964 797
belaran@964 798 <para>Si vous étudiez de nouveau la sortie de la commande <command role="hg-cmd">hg pull</command> dans
belaran@964 799 la section <xref linkend="sec:tour:pull"/> quand nous l'avons exécutée sans l'option
belaran@964 800 <option role="hg-opt-pull">-u</option>, vous pouvez constater qu'elle a affiché un rappel assez
belaran@964 801 utile : vous devez encore effectuer une opération pour mettre à jour
belaran@964 802 votre espace de travail:
belaran@964 803 </para>
belaran@964 804
belaran@964 805 <programlisting>
belaran@964 806 <para> (run 'hg update' to get a working copy)
belaran@964 807 </para>
belaran@964 808 </programlisting>
belaran@964 809
belaran@964 810 <para>Pour découvrir sur quelle révision de l'espace de travail on est, utilisez
belaran@964 811 la commande <command role="hg-cmd">hg parents</command>.
belaran@964 812 <!-- &interaction.tour.parents; -->
belaran@964 813 Si vous regardez de nouveau le dessin <xref linkend="fig:tour-basic:history"/>, vous
belaran@964 814 &lt;&lt;&lt;&lt;&lt;&lt;&lt; local
belaran@964 815 verrez les flèches reliant entre eux les \textit{changeset}. Le nœud
belaran@964 816 d'où la flèche <emphasis>part</emphasis> est dans chaque cas un parent,
belaran@964 817 et le nœud où la flèche <emphasis>arrive</emphasis> est un enfant.
belaran@964 818 </para>
belaran@964 819
belaran@964 820 <para>L'espace de travail a un parent de la même manière, c'est ce \textit{changeset}
belaran@964 821 que l'espace de travail contient à ce moment.
belaran@964 822 %%%TODO : difficile à comprendre : l'espace de travail a un parent, de la même manière, c'est ce changeset que l'espace...
belaran@964 823 </para>
belaran@964 824
belaran@964 825 <para>Pour mettre à jour l'espace de travail d'une révision particulière,
belaran@964 826 indiquez un numéro de révision ou un \textit{changeset ID} à la commande
belaran@964 827 <command role="hg-cmd">hg update</command>.
belaran@964 828 <!-- &interaction.tour.older; -->
belaran@964 829 Si vous ne précisez pas de manière explicite de numéro de révision
belaran@964 830 la commande <command role="hg-cmd">hg update</command> mettra à jour votre espace de travail avec
belaran@964 831 le contenu de la révsion \textit{tip}, comme montré dans l'exemple
belaran@964 832 ci dessus lors du second appel à <command role="hg-cmd">hg update</command>.
belaran@964 833 </para>
belaran@964 834
belaran@964 835 </sect2>
belaran@964 836 <sect2>
belaran@964 837 <title>Transférer les modifications à un autre dépôt</title>
belaran@964 838
belaran@964 839 <para>Mercurial vous laisse transférer les modifications à un autre
belaran@964 840 dépôt, depuis votre dépôt actuel. Comme dans l'exemple du
belaran@964 841 <command role="hg-cmd">hg pull</command> ci-dessus, nous allons créer un dépôt temporaire
belaran@964 842 vers lequel transférer\footnote{NdT: Les francophones disent souvent
belaran@964 843 <quote>pousser</quote> tout simplement} nos modifications.
belaran@964 844 <!-- &interaction.tour.clone-push; -->
belaran@964 845 La commande <command role="hg-cmd">hg outgoing</command> nous indique quels changements nous
belaran@964 846 allons transférer vers l'autre serveur ?
belaran@964 847 <!-- &interaction.tour.outgoing; -->
belaran@964 848 Et la commande <command role="hg-cmd">hg push</command> effectue réellement le transfert.
belaran@964 849 <!-- &interaction.tour.push; -->
belaran@964 850 Comme avec <command role="hg-cmd">hg pull</command>, la commande <command role="hg-cmd">hg push</command> ne met pas à jour
belaran@964 851 le répertoire de travail du dépôt dans lequel il transfère les
belaran@964 852 modifications. (À l'inverse de <command role="hg-cmd">hg pull</command>, <command role="hg-cmd">hg push</command> ne fournit
belaran@964 853 pas d'option <literal>-u</literal> pour forcer la mise à jour de l'espace
belaran@964 854 de travail cible).
belaran@964 855 </para>
belaran@964 856
belaran@964 857 <para>Qu'est ce qui se passe lorsque vous essayez de récupérer ou de transférer
belaran@964 858 vos modifications et que le dépôt cible a déjà reçu ces modifications ?
belaran@964 859 Rien de bien excitant.
belaran@964 860 <!-- &interaction.tour.push.nothing; -->
belaran@964 861 </para>
belaran@964 862
belaran@964 863 </sect2>
belaran@964 864 <sect2>
belaran@964 865 <title>Partager ses modifications à travers le réseau</title>
belaran@964 866
belaran@964 867 <para>Les commandes que nous avons étudiées dans les sections précédentes
belaran@964 868 ne sont pas limitées aux dépôt locaux. Chacune fonctionne de la même
belaran@964 869 manière à travers une connexion réseau, il suffit de lui passer une
belaran@964 870 URL à la place d'un chemin de fichier local.
belaran@964 871 </para>
belaran@964 872
belaran@964 873 <para><!-- &interaction.tour.outgoing.net; -->
belaran@964 874 Dans cet exemple, nous allons voir quels changements nous pourrions
belaran@964 875 transférer vers le dépôt distant, mais le dépôt est, de manière tout
belaran@964 876 à fait compréhensible, pas configuré pour accepter des modifications
belaran@964 877 d'utilisateurs anonymes.
belaran@964 878 <!-- &interaction.tour.push.net; -->
belaran@964 879 </para>
belaran@964 880
belaran@964 881 </sect2>
belaran@964 882 </sect1>
belaran@964 883 </chapter>
belaran@964 884
belaran@964 885 <!--
belaran@964 886 local variables:
belaran@964 887 sgml-parent-document: ("00book.xml" "book" "chapter")
belaran@964 888 end:
belaran@964 889 -->