hgbook

changeset 979:64475a75365b

Merged from rpelisse
author Jean-Marie Clément <JeanMarieClement@web.de>
date Fri Sep 04 18:24:06 2009 +0200 (2009-09-04)
parents 58e0737da566 8de6cebc363d
children c40dac4f63d8
files
line diff
     1.1 --- a/fr/ch02-tour-basic.xml	Fri Sep 04 18:20:36 2009 +0200
     1.2 +++ b/fr/ch02-tour-basic.xml	Fri Sep 04 18:24:06 2009 +0200
     1.3 @@ -1,889 +1,1009 @@
     1.4  <!-- vim: set filetype=docbkxml shiftwidth=2 autoindent expandtab tw=77 : -->
     1.5  
     1.6 -<chapter>
     1.7 -<title>Un rapide tour de Mercurial</title>
     1.8 -<para>\label{chap:tour-basic}</para>
     1.9 -
    1.10 -<sect1>
    1.11 -<title>Installer Mercurial sur votre système</title>
    1.12 -<para>\label{sec:tour:install}</para>
    1.13 -
    1.14 -<para>Des paquetages binaires de Mercurial sont disponibles pour la plupart
    1.15 +<chapter id="chap:tour-basic">
    1.16 +  <?dbhtml filename="a-tour-of-mercurial-the-basics.html"?>
    1.17 +  <title>Une rapide présentation de Mercurial : les bases</title>
    1.18 +
    1.19 +  <sect1>
    1.20 +    <title>Installer Mercurial sur votre système</title>
    1.21 +
    1.22 +    <para id="x_1">Des paquetages binaires de Mercurial sont disponibles pour la plupart
    1.23  des systèmes d'exploitation, ce qui rend facile l'utilisation immédiate
    1.24  de Mercurial sur votre ordinateur.</para>
    1.25  
    1.26 -<sect2>
    1.27 -<title>Linux</title>
    1.28 -
    1.29 -<para>Parce que chaque distribution de Linux a ses propres outils de gestion
    1.30 -de paquets, politiques et rythmes de développements, il est difficile de
    1.31 -donner un ensemble d'instructions uniques pour installer les binaires de
    1.32 -Mercurial. La version de Mercurial avec laquelle vous vous retrouverez
    1.33 -dépendra grandement de l'activité de la personne en charge du paquetage
    1.34 -pour la distribution.</para>
    1.35 -
    1.36 -<para>Pour rester simple, je me concentrerai sur l'installation de Mercurial
    1.37 -en ligne de commande, sous les distributions les plus courantes. La
    1.38 -plupart des distributions fournissent des gestionnaires graphiques de
    1.39 -paquetage qui vous permettront d'installer Mercurial en quelques clicks.
    1.40 -Le paquetage devrait se nommer \textit{mercurial}.</para>
    1.41 -
    1.42 -<itemizedlist>
    1.43 -<listitem><para>Debian:</para>
    1.44 -</listitem><programlisting>
    1.45 -<listitem><para>    apt-get install mercurial</para>
    1.46 -</listitem></programlisting></para>
    1.47 -</listitem>
    1.48 -<listitem><para>Fedora Core:
    1.49 -</para>
    1.50 -</listitem><programlisting>
    1.51 -<listitem><para>    yum install mercurial
    1.52 -</para>
    1.53 -</listitem></programlisting>
    1.54 -
    1.55 -</para>
    1.56 -</listitem>
    1.57 -<listitem><para>Gentoo:
    1.58 -</para>
    1.59 -</listitem><programlisting>
    1.60 -<listitem><para>    emerge mercurial
    1.61 -</para>
    1.62 -</listitem></programlisting>
    1.63 -
    1.64 -</para>
    1.65 -</listitem>
    1.66 -<listitem><para>OpenSUSE:
    1.67 -</para>
    1.68 -</listitem><programlisting>
    1.69 -<listitem><para>    yum install mercurial
    1.70 -</para>
    1.71 -</listitem></programlisting>
    1.72 -
    1.73 -</para>
    1.74 -</listitem>
    1.75 -<listitem><para>Ubuntu: Le paquetage de Mercurial d'Ubuntu est construit sur celui de Debian.
    1.76 -              Pour l'installer, exécutez simplement les commandes suivantes:
    1.77 -</para>
    1.78 -</listitem><programlisting>
    1.79 -<listitem><para>    apt-get install mercurial
    1.80 -</para>
    1.81 -</listitem></programlisting>
    1.82 -<listitem><para>  Les paquetages Ubuntu pour Mercurial ont tendance à être un peu en retard
    1.83 -  par rapport au paquetage Debian (au moment de l'écriture de ce livre, il
    1.84 -  faut compter à peu près un retard de 7 mois), ce qui signifie que parfois
    1.85 -  sur Ubuntu, vous risquez de rencontrer des problèmes qui ont été corrigés
    1.86 -  depuis longtemps dans les paquetages Debian.
    1.87 -</para>
    1.88 -</listitem></itemizedlist>
    1.89 -
    1.90 -</sect2>
    1.91 -<sect2>
    1.92 -<title>Solaris</title>
    1.93 -
    1.94 -<para>SunFreeWare, à <ulink url="http://www.saufreeware.com">http://www.saufreeware.com</ulink>, est une bonne source
    1.95 -pour trouver un vaste nombre de paquets précompilés pour 32 ou 64 bits
    1.96 -Intel et les architecture Sparc, dont les versions courantes de Mercurial.
    1.97 -</para>
    1.98 -
    1.99 -</sect2>
   1.100 -<sect2>
   1.101 -<title>Mac OS X</title>
   1.102 -
   1.103 -<para>Lee Cantey publie un installateur de Mercurial pour Mac OS X sur le site
   1.104 -<ulink url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>.  Ce paquetage fonctionne sur les
   1.105 -architectures Intel- et PowerPC. Avant de vous en servir, vous devez
   1.106 -installer une version Universelle MacPython <citation>web:macpython</citation>. C'est
   1.107 -assez facile à faire : suivez simplement les instructions sur le site
   1.108 -de Lee.
   1.109 -</para>
   1.110 -
   1.111 -<para>Il est aussi possible d'installer Mercurial en utilisant Fink ou MacPorts,
   1.112 -deux outils de gestion de paquetage libres pour Mac OS X. Si vous avez
   1.113 -Fink, utilisez <command>sudo fink install mercurial-py25</command>. Si vous avez
   1.114 -MacPorts, <command>sudo port install mercurial</command>.
   1.115 -</para>
   1.116 -
   1.117 -</sect2>
   1.118 -<sect2>
   1.119 -<title>Windows</title>
   1.120 -
   1.121 -<para>Lee Cantey publie aussi un installateur de Mercurial pour Windows sur le site
   1.122 -<ulink url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>. Ce paquetage n'a aucune dépendance
   1.123 -externe, il fonctionne <quote>tout court</quote>.
   1.124 -</para>
   1.125 -
   1.126 -<note>
   1.127 -<para>  La version de Windows de Mercurial ne convertie pas automatiquement
   1.128 -  les retours chariot Windows et Unix. Si vous désirez partager votre
   1.129 -  travail avec des utilisateurs Unix, vous devez faire un peu de configuration
   1.130 -  supplémentaire. XXX En dire plus.
   1.131 -</para>
   1.132 -</note>
   1.133 -
   1.134 -</sect2>
   1.135 -</sect1>
   1.136 -<sect1>
   1.137 -<title>Commencer à utiliser Mercurial</title>
   1.138 -
   1.139 -<para>Pour commencer, nous utiliserons la commande <command role="hg-cmd">hg version</command> pour vérifier
   1.140 -si Mercurial est installé proprement. Les informations affichées sur la
   1.141 -version ne sont pas réellement importantes en soit, c'est surtout de savoir
   1.142 -si elles s'affichent qui nous intéresse.
   1.143 -<!-- &interaction.tour.version; -->
   1.144 -</para>
   1.145 -
   1.146 -<sect2>
   1.147 -<title>L'aide intégrée</title>
   1.148 -
   1.149 -<para>Mercurial fournit un système d'aide intégré, ce qui est inestimable quand
   1.150 -vous vous retrouvez coincé à essayer de vous rappeler comment lancer telle
   1.151 -ou telle commande.
   1.152 -Si c'est le cas, exécutez simplement <command role="hg-cmd">hg help</command>; il vous aidera à imprimer
   1.153 -une brève liste de commandes, avec une description de ce qu'elles font. Si vous
   1.154 -demandez de l'aide sur une commande spécifique (voir ci-dessous), il affichera
   1.155 -des informations plus détaillées.
   1.156 -<!-- &interaction.tour.help; -->
   1.157 -Pour un niveau d'informations encore plus détaillées (ce dont vous aurez rarement
   1.158 -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
   1.159 -l'abréviation de <option role="hg-opt-global">--verbose</option>, et indique à Mercurial d'afficher plus
   1.160 -d'informations que d'habitude.
   1.161 -</para>
   1.162 -
   1.163 -</sect2>
   1.164 -</sect1>
   1.165 -<sect1>
   1.166 -<title>Travailler avec un dépôt</title>
   1.167 -
   1.168 -<para>Avec Mercurial, tout se déroule au sein du <emphasis>dépôt</emphasis>\footnote{NdT: Dépôt est
   1.169 -la traduction que j'ai retenue pour tout l'ouvrage du terme anglais \textit{repository}}.
   1.170 -Le dépôt d'un projet contient tous les fichiers qui <quote>appartiennent</quote> au projet.
   1.171 -</para>
   1.172 -
   1.173 -<para>Il n'y a rien de particulièrement magique au sujet de ce dépôt, c'est
   1.174 -simplement une arborescence sur votre système de fichiers que Mercurial
   1.175 -traite de manière spéciale. Vous pouvez renommer ou effacer ce répertoire
   1.176 -à n'importe quel moment, en utilisant la ligne de commande ou votre
   1.177 -explorateur de fichiers.
   1.178 -</para>
   1.179 -
   1.180 -<sect2>
   1.181 -<title>Faire une copie locale de votre dépôt</title>
   1.182 -
   1.183 -<para><emphasis>Copier</emphasis> un dépôt est juste un peu spécial. Bien que vous
   1.184 -puissiez utiliser une commande habituelle de copie pour copier
   1.185 -votre dépôt, il vaut mieux utiliser une commande fournie par
   1.186 -Mercurial. Cette commande est appelée <command role="hg-cmd">hg clone</command>, car elle
   1.187 -crée une copie identique à un dépôt existant.
   1.188 -<!-- &interaction.tour.clone; -->
   1.189 -Si votre opération de clonage réussit, vous devriez maintenant
   1.190 -avoir un répertoire local appelé <filename class="directory">hello</filename>. Ce répertoire
   1.191 -contiendra quelques fichiers.
   1.192 -<!-- &interaction.tour.ls; -->
   1.193 -Ces fichiers ont le même contenu et historique dans votre dépôt
   1.194 -qu'ils ont dans le dépôt que vous avez cloné.
   1.195 -</para>
   1.196 -
   1.197 -<para>Chaque dépôt Mercurial est complet, autonome et indépendant. Il
   1.198 -contient sa propre copie privée des fichiers du projet et de leur
   1.199 -historique. Le clone d'un dépôt se souvient de la localisation du
   1.200 -dépôt à partir duquel il a été clôné, mais il ne communique pas avec
   1.201 -ce dernier, ou un autre, à moins que vous ne lui demandiez.
   1.202 -</para>
   1.203 -
   1.204 -<para>Ce que tout ceci signifie pour le moment est que nous sommes libres
   1.205 -d'expérimenter avec ce dépôt, confiants dans le fait qu'il s'agit d'un
   1.206 -<quote>bac à sable</quote> qui n'affectera personne d'autre.
   1.207 -</para>
   1.208 -
   1.209 -</sect2>
   1.210 -<sect2>
   1.211 -<title>Quel est le contenu d'un dépôt ?</title>
   1.212 -
   1.213 -<para>Prêtons plus attention un instant au contenu d'un dépôt. Nous voyons
   1.214 -qu'il contient un répertoire nommé <filename class="directory">.hg</filename>. C'est ici que Mercurial
   1.215 -conserve toutes ses métadonnées.
   1.216 -<!-- &interaction.tour.ls-a; -->
   1.217 -</para>
   1.218 -
   1.219 -<para>Le contenu du répertoire <filename class="directory">.hg</filename> et ses sous répertoires sont les
   1.220 -seuls propres à Mercurial. Tous les autres fichiers et répertoires dans
   1.221 -le dépôt sont à vous, et vous pouvez en faire ce que vous voulez.
   1.222 -</para>
   1.223 -
   1.224 -<para>Pour introduire un peu de terminologie, le répertoire <filename class="directory">.hg</filename> est
   1.225 -un <quote>vrai</quote> dépôt, et tous les fichiers et les répertoires qui coexistent
   1.226 -avec lui, sont désignés sous le nom <emphasis>espace de travail</emphasis>\footnote{NdT:
   1.227 -\textit{working directory}}. Une manière facile de se rappeler cette
   1.228 -distinction est de retenir que le <emphasis>dépôt</emphasis> contient l'<emphasis>historique</emphasis>
   1.229 -de votre projet, alors que l'<emphasis>espace de travail</emphasis> contient une \emph{copie
   1.230 -ponctuelle}\footnote{NdT: Ce terme est une traduction du terme anglais
   1.231 -\textit{snapshot}. Il est traduit ici pour faciliter la lecture, mais ne sera
   1.232 -plus traduit par la suite.} de votre projet à un certain point de son
   1.233 -historique.
   1.234 -</para>
   1.235 -
   1.236 -</sect2>
   1.237 -</sect1>
   1.238 -<sect1>
   1.239 -<title>Une ballade dans l'historique</title>
   1.240 -
   1.241 -<para>Une des premières choses que vous aurez envie de faire avec un nouveau
   1.242 -dépôt, sera de comprendre son historique. La commande <command role="hg-cmd">hg log</command> vous
   1.243 -donne une vue de l'historique.
   1.244 -<!-- &interaction.tour.log; -->
   1.245 -Par défaut, cette commande affiche à l'écran un bref paragraphe pour chaque
   1.246 -révision enregistrée pour ce projet. Dans la terminologie de Mercurial, nous
   1.247 -appelons chacun de ces évènements enregistrés un <emphasis>changeset</emphasis>, parce
   1.248 -qu'il contient un ensemble de modifications sur plusieurs fichiers.
   1.249 -</para>
   1.250 -
   1.251 -<para>La commande <command role="hg-cmd">hg log</command> affiche ainsi ces informations:
   1.252 -</para>
   1.253 -<itemizedlist>
   1.254 -<listitem><para><literal>changeset</literal>: Ce champ contient un nombre, séparé par deux points
   1.255 -  (:), d'une chaine hexadécimale. Il s'agit en fait d'<emphasis>identifiants</emphasis>
   1.256 -  d'un \textit{changeset}. Il y a deux identifiants car le numéro de
   1.257 -  la révision est plus court et plus à facile à saisir qu'une séquence
   1.258 -  hexadécimale.
   1.259 -</para>
   1.260 -</listitem>
   1.261 -<listitem><para><literal>user</literal>: L'identité de la personne qui a créée ce  %%% laisser le terme anglais car il sera affiché
   1.262 -  \textit{changeset}. C'est un champ libre de forme, mais la plupart du
   1.263 -  temps il contient le nom et l'email de la personne.
   1.264 -</para>
   1.265 -</listitem>
   1.266 -<listitem><para><literal>date</literal>: La date et l'heure à laquelle le \textit{changeset}
   1.267 -  a été créé, ainsi que le \textit{fuseau horaire} dans laquelle il a été créé. %%%TODO: Translate 'timezone' properly : FUSEAU
   1.268 -  (La date et l'heure sont locales à ce \textit{fuseau}, elles indiquent
   1.269 -  donc quelle date et heure il était pour la personne qui a créé ce %%%TODO: je suppose (quelle "heure")  OUI
   1.270 -  \textit{changeset}.)
   1.271 -</para>
   1.272 -</listitem>
   1.273 -<listitem><para><literal>résumé</literal>: La première du message que le créateur a associé à
   1.274 -  son \textit{changeset} pour le décrire.
   1.275 -</para>
   1.276 -</listitem></itemizedlist>
   1.277 -
   1.278 -<para>Par défaut, la commande <command role="hg-cmd">hg log</command> n'affiche qu'un résumé, il manque
   1.279 -beaucoup de détails.
   1.280 -</para>
   1.281 -
   1.282 -<para>La figure <xref linkend="fig:tour-basic:history"/> fournit une représentation graphique
   1.283 -de l'historique du dépôt <filename class="directory">hello</filename>, pour rendre plus facile de voir
   1.284 -dans quelle direction l'historique se <quote>déroule</quote>\footnote{NdT: \textit{flowing in}.}.
   1.285 -Nous reviendrons régulièrement sur cette représentation dans ce chapitre et
   1.286 -ceux qui suivent.
   1.287 -</para>
   1.288 -
   1.289 -<informalfigure>
   1.290 -
   1.291 -<para>  <mediaobject><imageobject><imagedata fileref="tour-history"/></imageobject><textobject><phrase>XXX add text</phrase></textobject></mediaobject>
   1.292 -  <caption><para>Représentation graphique du dépôt <filename class="directory">hello</para></caption> </filename>
   1.293 -  \label{fig:tour-basic:history}
   1.294 -</para>
   1.295 -</informalfigure>
   1.296 -
   1.297 -<sect2>
   1.298 -<title>Changesets, révisions, et discuter avec les autres</title>
   1.299 -<para>%%% je propose "colaboration"
   1.300 -</para>
   1.301 -
   1.302 -<para>Comme l'anglais est réputé pour être un langage maladroit, et que l'informatique
   1.303 -est la source de bien des erreurs de terminologies (pourquoi utiliser un
   1.304 -seul terme quand quatre feront l'affaire ?), la gestion de version a une
   1.305 -variété de mots et de phrases qui veulent dire la même chose. Si vous
   1.306 -discutez d'historique de Mercurial avec d'autres personnes,
   1.307 -%%%TODO: ça ne veut rien dire: il faut supprimer une des personnes : soit "quelqu'un",
   1.308 -% soit "à d'autres personnes"
   1.309 -vous constaterez que souvent le mot <quote>\textit{changeset}</quote> est contracté simplement
   1.310 -en <quote>change</quote> ou (à l'écrit) <quote>cset</quote>, et même parfois un
   1.311 -\textit{changeset} simplement <quote>révision</quote>, abrégé en <quote>rev</quote>.
   1.312 -</para>
   1.313 -
   1.314 -<para>Bien que le <emphasis>mot</emphasis> que vous utilisez pour désigner le concept de
   1.315 -\textit{changeset} importe peu, l'<emphasis>identifiant</emphasis> que vous utilisez
   1.316 -pour désigner un <emphasis>changeset</emphasis> \textit{spécifique} a une grande
   1.317 -importance. Rappelez vous que le champ \textit{changeset} affiché par la
   1.318 -commande <command role="hg-cmd">hg log</command> identifie un \textit{changeset} à la fois avec
   1.319 -un numéro de révision et une séquence hexadécimale.
   1.320 -</para>
   1.321 -
   1.322 -<itemizedlist>
   1.323 -<listitem><para>Le numéro de révision est <emphasis>seulement valable dans ce dépôt</emphasis>,
   1.324 -</para>
   1.325 -</listitem>
   1.326 -<listitem><para>alors que la séquence hexadécimale est un \emph{identifiant
   1.327 -	permanent, et invariant } qui pourra toujours être associé au
   1.328 -	\textit{changeset} exact de <emphasis>chaque</emphasis> copie de votre dépôt.
   1.329 -</para>
   1.330 -</listitem></itemizedlist>
   1.331 -
   1.332 -<para>La distinction est importante. Si vous envoyez un email à quelqu'un en
   1.333 -parlant de la <quote>révision 33</quote>, il est très probable que sa révision 33
   1.334 -<emphasis>ne sera pas la même</emphasis> que la votre. La raison de ceci est que le
   1.335 -numéro de révision dépend de l'ordre dans lequel les modifications sont
   1.336 -arrivées dans le dépôt, et il n'y a aucune garantie que les mêmes changements
   1.337 -soient arrivés dans le même ordre dans différents dépôts. Trois modifications
   1.338 -$a,b,c$ peuvent aisément apparaitre dans un dépôt comme $0,1,2$, et dans
   1.339 -un autre comme $1,0,2$.
   1.340 -</para>
   1.341 -
   1.342 -<para>Mercurial utilise les numéros de révision uniquement comme des raccourcis
   1.343 -pratiques. Si vous devez discuter d'un \textit{changeset} avec quelqu'un,
   1.344 -ou identifer un \textit{changeset} pour une quelquonque %%%TODO: our : "pour" ou "ou"
   1.345 -raison (par exemple, un rapport de \textit{bug}), utilisez la séquence
   1.346 -hexadécimale.
   1.347 -</para>
   1.348 -
   1.349 -</sect2>
   1.350 -<sect2>
   1.351 -<title>Afficher une révision spécifique</title>
   1.352 -
   1.353 -<para>Pour réduire la sortie de <command role="hg-cmd">hg log</command> à une seule révision, utilisez
   1.354 -l'option <option role="hg-opt-log">-r</option> (ou <option role="hg-opt-log">--rev</option>). Vous pouvez utiliser
   1.355 -le numéro de révision ou la séquence hexadécimale comme identifiant, et
   1.356 -demander autant de révisions que vous le souhaitez.
   1.357 -<!-- &interaction.tour.log-r; -->
   1.358 -</para>
   1.359 -
   1.360 -<para>Si vous voulez voir l'historique de plusieurs révisions sans avoir à
   1.361 -les énumérer, vous pouvez utiliser la <emphasis>\textit{range notation</emphasis>}
   1.362 -\footnote{NdT: Il n'est pas aisé de traduire ce terme, donc je le  %%%TODO : intervalle de numérotation ?
   1.363 -laisse en anglais} qui vous permet d'exprimer l'idée <quote>je veux toutes
   1.364 -les révisions entre $a$ et $b$, inclus</quote>.
   1.365 -<!-- &interaction.tour.log.range; -->
   1.366 -Mercurial respecte aussi l'ordre dans lequel vous spécifiez les
   1.367 -révisions, ainsi <command role="hg-cmd">hg log -r 2:4</command> affichera $2,3,4$ alors que
   1.368 -<command role="hg-cmd">hg log -r 4:2</command> affichera $4,3,2$.
   1.369 -</para>
   1.370 -
   1.371 -</sect2>
   1.372 -<sect2>
   1.373 -<title>Informations détaillées</title>
   1.374 -
   1.375 -
   1.376 -<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
   1.377 -que vous cherchez. En revanche, vous aurez probablement besoin de voir une description
   1.378 -complète du changement, ou une liste des fichiers modifiés si vous
   1.379 -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 ?
   1.380 -recherchez. L'option \hgopt{-v} de la commande <command role="hg-cmd">hg log</command> (ou
   1.381 -\hgopt{--verbose}) vous donne ces informations supplémentaires.
   1.382 -<!-- &interaction.tour.log-v; -->
   1.383 -</para>
   1.384 -
   1.385 -<para>Si vous voulez voir à la fois la description et le contenu d'une
   1.386 -modification, ajouter l'option <option role="hg-opt-log">-p</option> (ou <option role="hg-opt-log">--patch</option>).
   1.387 -Ceci affiche le contenu d'une modification comme un <emphasis>diff unifié</emphasis>
   1.388 -\footnote{NdT: \textit{unified diff}} (si vous n'avez jamais vu de diff
   1.389 -unifié avant, consultez la section <xref linkend="sec:mq:patch"/> pour un rapide
   1.390 -survol).
   1.391 -</para>
   1.392 -
   1.393 -<para><!-- &interaction.tour.log-vp; -->
   1.394 -</para>
   1.395 -
   1.396 -</sect2>
   1.397 -</sect1>
   1.398 -<sect1>
   1.399 -<title>Tout sur les options de commandes</title>
   1.400 -
   1.401 -
   1.402 -<para>Avant d'aller plus loin sur le fonctionnement des commandes de Mercurial,
   1.403 -étudions un moment comment elles fonctionnent de manière générale. Vous
   1.404 -trouverez ça probablement utile pour la suite de notre parcours.
   1.405 -</para>
   1.406 -
   1.407 -<para>Mercurial utilise une approche directe et cohérente pour interpréter %%%TODO: une manière d'approche ?
   1.408 -les options que vous passez aux commandes. Il suit une convention commune
   1.409 -à la plupart des systèmes Unix et Linux modernes.
   1.410 -</para>
   1.411 -
   1.412 -<itemizedlist>
   1.413 -<listitem><para>Chaque option a un nom complet. Par exemple, comme nous l'avons déjà
   1.414 -      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...?
   1.415 -</para>
   1.416 -</listitem>
   1.417 -<listitem><para>La plupart des options disposent de noms abrégés. Aussi, au lieu d'utiliser
   1.418 -  <option role="hg-opt-log">--rev</option>, vous pouvez utiliser <option role="hg-opt-log">-r</option>. (Les options qui
   1.419 -  n'ont pas de noms abrégés sont généralement rarement utilisées, pour cette raison).
   1.420 -</para>
   1.421 -</listitem>
   1.422 -<listitem><para>Les noms complets commencent par deux tirets (i.e. <option role="hg-opt-log">--rev</option>),
   1.423 -  alors que les options courtes commencent avec un seul (i.e. <option role="hg-opt-log">-r</option>).
   1.424 -</para>
   1.425 -</listitem>
   1.426 -<listitem><para>Les noms des options sont cohérents entre les commandes. Par exemple,
   1.427 -  chaque commande qui accepte un \textit{changeset ID} ou un numéro de révision
   1.428 -  accepte aussi <option role="hg-opt-log">-r</option> et <option role="hg-opt-log">--rev</option> comme arguments.
   1.429 -  %TODO: Small mistake here, shouldn't have log here... shouldn't it ?
   1.430 -</para>
   1.431 -</listitem></itemizedlist>
   1.432 -
   1.433 -<para>Dans les exemples de ce livre, j'utilise les noms abrégés plutôt que les noms
   1.434 -complets. Ceci est une préférence personnelle, pas une recommandation.
   1.435 -</para>
   1.436 -
   1.437 -<para>La plupart des commandes qui affichent une quelconque sortie à l'écran,
   1.438 -afficheront davantage avec l'option <option role="hg-opt-global">-v</option> (ou <option role="hg-opt-global">--verbose</option>), et
   1.439 -moins avec l'option <option role="hg-opt-global">-q</option> (ou <option role="hg-opt-global">--quiet</option>).
   1.440 -</para>
   1.441 -
   1.442 -</sect1>
   1.443 -<sect1>
   1.444 -<title>Faire et vérifier des modifications</title>
   1.445 -
   1.446 -<para>Maintenant que nous avons une bonne idée des commandes pour consulter
   1.447 -l'historique de Mercurial, regardons comment faire des modifications et
   1.448 -les examiner.
   1.449 -</para>
   1.450 -
   1.451 -
   1.452 -<para>La première chose que nous allons faire c'est isoler notre expérience dans
   1.453 -un dépôt à part. Nous allons utiliser la commande <command role="hg-cmd">hg clone</command>, mais nous
   1.454 -n'avons pas besoin de faire une copie de dépôt distant. Comme nous avons
   1.455 -déjà une copie locale, nous pouvons juste faire un clone de celle-ci à la
   1.456 -place. C'est beaucoup plus rapide que de faire une copie à travers le
   1.457 -réseau, et un dépôt cloné localement prend également moins d'espace disque.
   1.458 -</para>
   1.459 -
   1.460 -<para><!-- &interaction.tour.reclone; -->
   1.461 -</para>
   1.462 -
   1.463 -<para>On notera au passage qu'il est souvent considéré comme une bonne pratique
   1.464 -de conserver une copie <quote>immaculée</quote> du dépôt distant, à partir de laquelle
   1.465 -vous pourrez faire des copies locales temporaires pour créer des <quote>bacs à
   1.466 -sable</quote> pour chaque tâche sur laquelle vous souhaitez travailler. Ceci vous
   1.467 -permet de travailler sur plusieurs choses en parallèle, chacune isolée les
   1.468 -unes des autres en attendant que ces tâches soient finies et que vous soyez
   1.469 -prêt à les réintégrer. Parce que les copies locales sont peu coûteuses, il
   1.470 -est très rapide de créer ou détruire des dépôts dès que vous en avez besoin.
   1.471 -</para>
   1.472 -
   1.473 -<para>%% Note: la dernière phrase n'est pas une traduction littérale, mais je
   1.474 -%% pense qu'elle exprime plus clairement en français ce que veut dire son
   1.475 -%% équivalent anglais. : OUI
   1.476 -</para>
   1.477 -
   1.478 -<para>Dans notre dépôt <filename class="directory">my-hello</filename>, nous avons un fichier <filename>hello.c</filename>
   1.479 -qui contient le classique programme <quote>hello, world</quote>. Nous allons utiliser
   1.480 -l'ancienne et vénérable commande <command>sed</command> pour l'éditer afin qu'il
   1.481 -affiche une seconde ligne à l'écran. (J'utilise <command>sed</command> seulement parce
   1.482 -qu'il est ainsi facile d'écrire des exemples sous forme de script. Comme
   1.483 -vous n'avez pas ces contraintes, vous n'utiliserez probablement pas <command>sed</command>
   1.484 -mais plutôt votre éditeur de texte favori).
   1.485 -</para>
   1.486 -
   1.487 -<para><!-- &interaction.tour.sed; -->
   1.488 -</para>
   1.489 -
   1.490 -<para>La commande <command role="hg-cmd">hg status</command> de Mercurial nous dira de quels fichiers Mercurial
   1.491 -s'occupe au sein de ce dépôt.
   1.492 -<!-- &interaction.tour.status; -->
   1.493 -La commande <command role="hg-cmd">hg status</command> n'affiche rien sur la sortie pour quelques fichiers
   1.494 -mais une ligne commence par <quote><literal>M</literal></quote> for <filename>hello.c</filename>. À moins que
   1.495 -vous ne lui indiquiez de le faire, <command role="hg-cmd">hg status</command> n'affichera aucune sortie
   1.496 -pour les fichiers qui n'ont pas été modifiés.
   1.497 -</para>
   1.498 -
   1.499 -<para>Le caractère <quote><literal>M</literal></quote> indique que Mercurial a remarqué que nous avions
   1.500 -modifié le fichier <filename>hello.c</filename>. Nous n'avons pas besoin d'<emphasis>informer</emphasis>
   1.501 -Mercurial que nous allons modifier un fichier avant de le faire, ou que nous
   1.502 -venons de le modifier, il est capable de s'en rendre compte tout seul.
   1.503 -</para>
   1.504 -
   1.505 -<para>C'est pratique de savoir que nous avons modifié <filename>hello.c</filename>, mais il
   1.506 -serait encore plus pratique de savoir ce que nous avons modifié exactement. Pour
   1.507 -cela, nous avons la commande  <command role="hg-cmd">hg diff</command>.
   1.508 -</para>
   1.509 -
   1.510 -<para><!-- &interaction.tour.diff; -->
   1.511 -</para>
   1.512 -
   1.513 -</sect1>
   1.514 -<sect1>
   1.515 -<title>Enregister les modifications dans un nouveau \textit{changeset}</title>
   1.516 -
   1.517 -<para>Nous pouvons modifier des fichiers, compiler et tester nos modifications,
   1.518 -et utiliser les commandes <command role="hg-cmd">hg status</command> et <command role="hg-cmd">hg diff</command> pour voir les
   1.519 -modifications effectuées, jusqu'au moment où nous serons assez satisfaits
   1.520 -pour décider d'enregistrer notre travail dans un \textit{changeset}.
   1.521 -</para>
   1.522 -
   1.523 -<para>La commande <command role="hg-cmd">hg commit</command> vous laisse créer un nouveau \textit{changeset},
   1.524 -nous désignerons généralement cette opération par <quote>faire un commit</quote> ou
   1.525 -<quote>commiter</quote>\footnote{NdT: De mon expérience, la plupart des francophones
   1.526 -utilisent  régulièrement, à l'oral, cette expression, mais bien évidement
   1.527 -il ne s'agit pas d'un terme de terminologie correcte, ni même français.}
   1.528 -</para>
   1.529 -
   1.530 -<sect2>
   1.531 -<title>Définir le nom d'utilisateur</title>
   1.532 -
   1.533 -<para>Quand vous exécutez la commande <command role="hg-cmd">hg commit</command> pour la première fois, elle
   1.534 -n'est pas garantie de réussir. Mercurial enregistre votre nom et votre
   1.535 -adresse avec chaque modification que vous effectuez, de manière à ce que
   1.536 -vous soyez capable (ou d'autres le soient) de savoir qui a fait quelle
   1.537 -modification. Mercurial essaye automatiquement de découvrir un nom
   1.538 -d'utilisateur qui ait un minimum de sens pour effectuer l'opération
   1.539 -de \textit{commit} avec. Il va essayer chacune des méthodes suivantes,
   1.540 -dans l'ordre:
   1.541 -</para>
   1.542 -<orderedlist>
   1.543 -<listitem><para>Si vous spécifiez l'option <option role="hg-opt-commit">-u</option> avec la commande
   1.544 -  <command role="hg-cmd">hg commit</command>, suivi d'un nom d'utilisateur, ceci aura toujours la
   1.545 -  priorité sur les autres méthodes ci dessous.
   1.546 -</para>
   1.547 -</listitem>
   1.548 -<listitem><para>Si vous avez défini une variable d'environnement <envar>HGUSER</envar>,
   1.549 -  c'est cette valeur qui est alors utilisée.
   1.550 -</para>
   1.551 -</listitem>
   1.552 -<listitem><para>Si vous créez un fichier nommé <filename role="special">.hgrc</filename> dans votre
   1.553 -   répertoire \textit{home}, avec une entrée <envar role="rc-item-ui">username</envar>,
   1.554 -   c'est la valeur associée qui sera utilisée. Pour voir à quoi
   1.555 -   ressemble le contenu de ce fichier regardez la
   1.556 -   section <xref linkend="sec:tour-basic:username"/> ci-dessous.
   1.557 -</para>
   1.558 -</listitem>
   1.559 -<listitem><para>Si vous avez défini une variable d'environnement <envar>EMAIL</envar>
   1.560 -  celle ci sera utilisée ensuite.
   1.561 -</para>
   1.562 -</listitem>
   1.563 -<listitem><para>Enfin, Mercurial interrogera votre système pour trouver votre
   1.564 -  nom d'utilisateur local ainsi que le nom de la machine hôte, et il
   1.565 -  fabriquera un nom d'utilisateur à partir de ces données. Comme il arrive
   1.566 -  souvent que ce genre de noms soit totalement inutile, il vous
   1.567 -  préviendra en affichant un message d'avertissement.
   1.568 -</para>
   1.569 -</listitem></orderedlist>
   1.570 -
   1.571 -<para>Si tous ces mécanismes échouent, Mercurial n'exécutera pas la commande,
   1.572 -affichant un message d'erreur. Dans ce cas, il ne vous laissera pas
   1.573 -effectuer de \textit{commit} tant que vous n'aurez pas défini un nom
   1.574 -d'utilisateur.
   1.575 -</para>
   1.576 -
   1.577 -<para>Vous devriez penser à utiliser la variable d'environement <envar>HGUSER</envar>
   1.578 -et l'option <option role="hg-opt-commit">-u</option> comme moyen pour \emph{changer le nom
   1.579 -d'utilisateur} par défaut. Pour une utilisation normale, la manière la plus
   1.580 -simple et robuste d'opérer est de créer un fichier <filename role="special">.hgrc</filename>,
   1.581 -voir ci-dessous pour les détails à ce sujet.
   1.582 -</para>
   1.583 -
   1.584 -<sect3>
   1.585 -<title>Créer un fichier de configuration pour Mercurial</title>
   1.586 -<para>\label{sec:tour-basic:username}
   1.587 -</para>
   1.588 -
   1.589 -<para>Pour définir un nom d'utilisateur, utilisez votre éditeur de texte favori
   1.590 -pour créer un fichier <filename role="special">.hgrc</filename> dans votre répertoire \textit{home}.
   1.591 -Mercurial va utiliser ce fichier pour retrouver votre configuration personnelle.
   1.592 -Le contenu initial devrait ressembler à ceci:
   1.593 -</para>
   1.594 -<programlisting>
   1.595 -<para>  # This is a Mercurial configuration file.
   1.596 -  [ui]
   1.597 -  username = Firstname Lastname &lt;email.address@domain.net&gt;
   1.598 -</para>
   1.599 -</programlisting>
   1.600 -<para>La ligne avec <literal>[ui]</literal> commence une <emphasis>section</emphasis> du fichier de
   1.601 -configuration, ainsi la ligne <quote><literal>username = ...</literal></quote> signifie <quote>
   1.602 -définir la valeur de l'élément <literal>username</literal> dans la section
   1.603 -<literal>ui</literal></quote>. Une section continue jusqu'à ce qu'une nouvelle
   1.604 -commence, ou que la fin du fichier soit atteinte. Mercurial ignore
   1.605 -les lignes vides et traite tout texte situé à la suite d'un
   1.606 -<quote><literal>#</literal></quote> jusqu'à la fin de la ligne comme un commentaire.
   1.607 -</para>
   1.608 -
   1.609 -</sect3>
   1.610 -<sect3>
   1.611 -<title>Choisir un nom d'utilisateur</title>
   1.612 -
   1.613 -<para>Vous pouvez utiliser n'importe quelle valeur pour votre <literal>username</literal>,
   1.614 -car cette information est destinée à d'autres personnes et non à être
   1.615 -interprétée par Mercurial. La convention que la plupart des personnes
   1.616 -&lt;&lt;&lt;&lt;&lt;&lt;&lt; local
   1.617 -suivent est d'utiliser leurs noms suivies de leurs adresses emails,
   1.618 -comme montrée ci-dessus:
   1.619 -</para>
   1.620 -
   1.621 -<note>
   1.622 -<para>  Le mécanisme interne du serveur \textit{web} intégré à Mercurial,
   1.623 -  masque les adresses emails, pour rendre plus difficile leurs
   1.624 -  récupérations par les outils utilisés par les \textit{spammmers}.
   1.625 -  Ceci réduit la probabilité que de recevoir encore plus de
   1.626 -  \textit{spam} si vous vous publiez un dépôt sur internet.
   1.627 -</para>
   1.628 -</note>
   1.629 -
   1.630 -</sect3>
   1.631 -</sect2>
   1.632 -<sect2>
   1.633 -<title>Rédiger un message de \textit{commit}</title>
   1.634 -
   1.635 -<para>Lorsqu'on effectue une opération de \textit{commit}, Mercurial
   1.636 -lance automatiquement un éditeur de texte pour permettre de saisir
   1.637 -un message qui décrira les modifications effectuées dans ce
   1.638 -\textit{changeset}. Ce message est nommé le \emph{message de
   1.639 -\textit{commit}}. Ce sera un enregistrement pour tout lecteur
   1.640 -expliquant le pourquoi et le comment de vos modifications, et il sera
   1.641 -affiché par la commande <command role="hg-cmd">hg log</command>.
   1.642 -<!-- &interaction.tour.commit; -->
   1.643 -</para>
   1.644 -
   1.645 -<para>L'éditeur que la commande <command role="hg-cmd">hg commit</command> déclenche ne contiendra
   1.646 -qu'une ligne vide suivi d'un certain nombre de lignes commençant
   1.647 -par <quote><literal>HG:</literal></quote>.
   1.648 -</para>
   1.649 -<programlisting>
   1.650 -<para>  <emphasis>empty line</emphasis>
   1.651 -  HG: changed hello.c
   1.652 -</para>
   1.653 -</programlisting>
   1.654 -<para>Mercurial ignore les lignes qui commencent avec <quote><literal>HG:</literal></quote>, il
   1.655 -ne les utilise que pour nous indiquer quels fichiers modifiés il se
   1.656 -prépare à \textit{commiter}. Modifier ou effacer ces lignes n'a
   1.657 -aucune conséquence sur l'opération de \textit{commit}.
   1.658 -</para>
   1.659 -
   1.660 -</sect2>
   1.661 -<sect2>
   1.662 -<title>Rédiger un message \textit{approprié}</title>
   1.663 -
   1.664 -<para>Comme <command role="hg-cmd">hg log</command> n'affiche que la première ligne du message de
   1.665 -\textit{commit} par défaut, il est souvent considéré comme une bonne
   1.666 -pratique de rédiger des messages de \textit{commit} qui tiennent
   1.667 -sur une seule ligne. Voilà un exemple concret de message de
   1.668 -\textit{commit} qui <emphasis>ne suit pas</emphasis> cette directive, et qui a donc
   1.669 -un résumé peu lisible.
   1.670 -</para>
   1.671 -
   1.672 -<programlisting>
   1.673 -<para>  changeset:   73:584af0e231be
   1.674 -  user:        Censored Person &lt;censored.person@example.org&gt;
   1.675 -  date:        Tue Sep 26 21:37:07 2006 -0700
   1.676 -  summary:     include buildmeister/commondefs.   Add an exports and install
   1.677 -</para>
   1.678 -</programlisting>
   1.679 -
   1.680 -<para>A ce sujet, il faut noter qu'il n'existe pas de règle absolue dans ce
   1.681 -domaine. Mercurial lui-même n'interprète pas les contenus des messages
   1.682 -de \textit{commit}, ainsi votre projet est libre de concevoir différentes
   1.683 -politiques de mise en page des messages.
   1.684 -</para>
   1.685 -
   1.686 -<para>Ma préférence personnelle va au message court, mais informatif, qui offre
   1.687 -des précisions supplémentaires par rapport à ce que pourrait m'apprendre une commande
   1.688 -<command role="hg-cmd">hg log --patch</command>.
   1.689 -</para>
   1.690 -
   1.691 -</sect2>
   1.692 -<sect2>
   1.693 -<title>Annuler un \textit{commit}</title>
   1.694 -
   1.695 -<para>Si, en rédigeant le message, vous décidez que finalement vous ne
   1.696 -voulez pas effectuer ce \textit{commit}, il suffit de quitter simplement
   1.697 -l'éditeur sans sauver. Ceci n'aura aucune conséquence sur le dépôt ou
   1.698 -les fichiers de l'espace de travail.
   1.699 -</para>
   1.700 -
   1.701 -<para>Si vous exécuter la commande <command role="hg-cmd">hg commit</command> sans aucun argument, elle
   1.702 -enregistre toutes les modifications que vous avez faites, comme le montre
   1.703 -les commandes <command role="hg-cmd">hg status</command> et <command role="hg-cmd">hg diff</command>.
   1.704 -</para>
   1.705 -
   1.706 -</sect2>
   1.707 -<sect2>
   1.708 -<title>Admirer votre travail</title>
   1.709 -
   1.710 -<para>Une fois que votre \textit{commit} est terminé, vous pouvez utiliser
   1.711 -la commande <command role="hg-cmd">hg tip</command> pour afficher le \textit{changeset} que nous
   1.712 -venons de créer. Cette commande produit une sortie à l'écran qui est
   1.713 -identique à celle du <command role="hg-cmd">hg log</command>, mais qui n'affiche que la dernière
   1.714 -révision du dépôt.
   1.715 -<!-- &interaction.tour.tip; -->
   1.716 -On fait couramment référence à la dernière révision du dépôt comme
   1.717 -étant la révision \textit{tip}, ou plus simplement le \textit{tip}.
   1.718 -</para>
   1.719 -
   1.720 -</sect2>
   1.721 -</sect1>
   1.722 -<sect1>
   1.723 -<title>Partager ses modifications</title>
   1.724 -
   1.725 -<para>Nous avons mentionné plus haut que les dépôts de Mercurial
   1.726 -sont autosuffisants. Ce qui signifie que le \textit{changeset}
   1.727 -que vous venez de créer existe seulement dans votre répertoire
   1.728 -<filename class="directory">my-hello</filename>. Étudions comment propager cette modification
   1.729 -dans d'autres dépôts.
   1.730 -</para>
   1.731 -
   1.732 -<sect2>
   1.733 -<title>Récupérer les modifications d'autres dépôts</title>
   1.734 -<para>\label{sec:tour:pull}
   1.735 -</para>
   1.736 -
   1.737 -<para>Pour commencer, construisons un clone de notre dépôt <filename class="directory">hello</filename>
   1.738 -qui ne contiendra pas le changement que nous venons d'effectuer. Nous
   1.739 -l'appellerons notre dépôt temporaire <filename class="directory">hello-pull</filename>.
   1.740 -</para>
   1.741 -
   1.742 -<para><!-- &interaction.tour.clone-pull; -->
   1.743 -</para>
   1.744 -
   1.745 -<para>Nous allons utiliser la commande <command role="hg-cmd">hg pull</command> pour apporter les
   1.746 -modifications depuis <filename class="directory">my-hello</filename> dans <filename class="directory">hello-pull</filename>.
   1.747 -Néanmoins, récupérer aveuglement des modifications depuis un dépôt
   1.748 -a quelque chose d'un peu effrayant. Mercurial propose donc une
   1.749 -commande <command role="hg-cmd">hg incoming</command> qui permet de savoir quelles modifications
   1.750 -la commande <command role="hg-cmd">hg pull</command> <emphasis>pourrait</emphasis> entraîner dans notre dépôt,
   1.751 -et ceci sans effectuer réellement de modification dessus.
   1.752 -<!-- &interaction.tour.incoming; -->
   1.753 -(Bien évidement, quelqu'un pourrait ajouter des modifications
   1.754 -supplémentaires sur le dépôt que nous étudions avec <command role="hg-cmd">hg incoming</command>,
   1.755 -avant que nous ayons effectué notre <command role="hg-cmd">hg pull</command>, avec comme
   1.756 -triste conséquence que nous aurons récupéré des modifications que
   1.757 -nous n'attendions pas.)
   1.758 -</para>
   1.759 -
   1.760 -<para>Apporter les modifications rapatriées dans un dépôt se résume donc
   1.761 -à exécuter la commande <command role="hg-cmd">hg pull</command>, et préciser depuis quel dépôt
   1.762 -effectuer le <command role="hg-cmd">hg pull</command>.
   1.763 -<!-- &interaction.tour.pull; -->
   1.764 -</para>
   1.765 -
   1.766 -<para>Comme vous le voyez avec une sortie avant et après de la commande
   1.767 -<command role="hg-cmd">hg tip</command>, nous avons réussi à récupérer aisément les modifications
   1.768 -dans notre dépôt. Il reste néanmoins quelque chose à faire avant de
   1.769 -placer ces modifications dans l'espace de travail.
   1.770 -</para>
   1.771 -
   1.772 -</sect2>
   1.773 -<sect2>
   1.774 -<title>Mise à jour de l'espace de travail</title>
   1.775 -
   1.776 -<para>Nous avons jusqu'à maintenant grossièrement définie la relation
   1.777 -entre un dépôt et un espace de travail. La commande <command role="hg-cmd">hg pull</command> que
   1.778 -nous avons exécutée dans la section <xref linkend="sec:tour:pull"/> a apporté
   1.779 -des modifications, que nous avons vérifiées, dans notre dépôt, mais
   1.780 -il n'y a aucune trace de ces modifications dans notre espace de travail.
   1.781 -En effet, <command role="hg-cmd">hg pull</command> ne touche pas (par défaut) à l'espace de
   1.782 -travail. C'est la commande <command role="hg-cmd">hg update</command> qui s'en charge.
   1.783 -<!-- &interaction.tour.update; -->
   1.784 -</para>
   1.785 -
   1.786 -<para>Il peut sembler un peu étrange que la commande <command role="hg-cmd">hg pull</command> ne mette
   1.787 -pas à jour l'espace de travail automatiquement. Il y a en fait une
   1.788 -très bonne raison à cela : vous pouvez utilisez la commande
   1.789 -</para>
   1.790 -
   1.791 -<para><command role="hg-cmd">hg update</command> pour mettre à jour votre espace de travail à l'état
   1.792 -dans lequel il était à <emphasis>n'importe quelle révision</emphasis> de l'historique
   1.793 -du dépôt. Si vous aviez un espace de travail contenant une ancienne
   1.794 -révision&emdash;pour chercher l'origine d'un \textit{bug}, par exemple&emdash;et
   1.795 -que vous effectuiez un <command role="hg-cmd">hg pull</command> qui mettrait à jour automatiquement
   1.796 -votre espace de travail, vous ne seriez probablement pas très satisfait.
   1.797 -</para>
   1.798 -
   1.799 -<para>Néanmoins, comme les opérations de \textit{pull} sont très souvent
   1.800 -suivies d'un \textit{update}, Mercurial vous permet de combiner les
   1.801 -deux aisément en passant l'option <option role="hg-opt-pull">-u</option> à la commande
   1.802 -<command role="hg-cmd">hg pull</command>
   1.803 -</para>
   1.804 -<programlisting>
   1.805 -<para>  hg pull -u
   1.806 -</para>
   1.807 -</programlisting>
   1.808 -
   1.809 -<para>Si vous étudiez de nouveau la sortie de la commande <command role="hg-cmd">hg pull</command> dans
   1.810 -la section <xref linkend="sec:tour:pull"/> quand nous l'avons exécutée sans l'option
   1.811 -<option role="hg-opt-pull">-u</option>, vous pouvez constater qu'elle a affiché un rappel assez
   1.812 -utile : vous devez encore effectuer une opération pour mettre à jour
   1.813 -votre espace de travail:
   1.814 -</para>
   1.815 -
   1.816 -<programlisting>
   1.817 -<para>  (run 'hg update' to get a working copy)
   1.818 -</para>
   1.819 -</programlisting>
   1.820 -
   1.821 -<para>Pour découvrir sur quelle révision de l'espace de travail on est, utilisez
   1.822 -la commande <command role="hg-cmd">hg parents</command>.
   1.823 -<!-- &interaction.tour.parents; -->
   1.824 -Si vous regardez de nouveau le dessin <xref linkend="fig:tour-basic:history"/>, vous
   1.825 -&lt;&lt;&lt;&lt;&lt;&lt;&lt; local
   1.826 -verrez les flèches reliant entre eux les \textit{changeset}. Le nœud
   1.827 -d'où la flèche <emphasis>part</emphasis> est dans chaque cas un parent,
   1.828 -et le nœud où la flèche <emphasis>arrive</emphasis> est un enfant.
   1.829 -</para>
   1.830 -
   1.831 -<para>L'espace de travail a un parent de la même manière, c'est ce \textit{changeset}
   1.832 -que l'espace de travail contient à ce moment.
   1.833 -%%%TODO : difficile à comprendre : l'espace de travail a un parent, de la même manière, c'est ce changeset que l'espace...
   1.834 -</para>
   1.835 -
   1.836 -<para>Pour mettre à jour l'espace de travail d'une révision particulière,
   1.837 -indiquez un numéro de révision ou un \textit{changeset ID} à la commande
   1.838 -<command role="hg-cmd">hg update</command>.
   1.839 -<!-- &interaction.tour.older; -->
   1.840 -Si vous ne précisez pas de manière explicite de numéro de révision
   1.841 -la commande <command role="hg-cmd">hg update</command> mettra à jour votre espace de travail avec
   1.842 -le contenu de la révsion \textit{tip}, comme montré dans l'exemple
   1.843 -ci dessus lors du second appel à <command role="hg-cmd">hg update</command>.
   1.844 -</para>
   1.845 -
   1.846 -</sect2>
   1.847 -<sect2>
   1.848 -<title>Transférer les modifications à un autre dépôt</title>
   1.849 -
   1.850 -<para>Mercurial vous laisse transférer les modifications à un autre
   1.851 -dépôt, depuis votre dépôt actuel. Comme dans l'exemple du
   1.852 -<command role="hg-cmd">hg pull</command> ci-dessus, nous allons créer un dépôt temporaire
   1.853 -vers lequel transférer\footnote{NdT: Les francophones disent souvent
   1.854 -<quote>pousser</quote> tout simplement} nos modifications.
   1.855 -<!-- &interaction.tour.clone-push; -->
   1.856 -La commande <command role="hg-cmd">hg outgoing</command> nous indique quels changements nous
   1.857 -allons transférer vers l'autre serveur ?
   1.858 -<!-- &interaction.tour.outgoing; -->
   1.859 -Et la commande <command role="hg-cmd">hg push</command> effectue réellement le transfert.
   1.860 -<!-- &interaction.tour.push; -->
   1.861 -Comme avec <command role="hg-cmd">hg pull</command>, la commande <command role="hg-cmd">hg push</command> ne met pas à jour
   1.862 -le répertoire de travail du dépôt dans lequel il transfère les
   1.863 -modifications. (À l'inverse de <command role="hg-cmd">hg pull</command>, <command role="hg-cmd">hg push</command> ne fournit
   1.864 -pas d'option <literal>-u</literal> pour forcer la mise à jour de l'espace
   1.865 -de travail cible).
   1.866 -</para>
   1.867 -
   1.868 -<para>Qu'est ce qui se passe lorsque vous essayez de récupérer ou de transférer
   1.869 -vos modifications et que le dépôt cible a déjà reçu ces modifications ?
   1.870 -Rien de bien excitant.
   1.871 -<!-- &interaction.tour.push.nothing; -->
   1.872 -</para>
   1.873 -
   1.874 -</sect2>
   1.875 -<sect2>
   1.876 -<title>Partager ses modifications à travers le réseau</title>
   1.877 -
   1.878 -<para>Les commandes que nous avons étudiées dans les sections précédentes
   1.879 -ne sont pas limitées aux dépôt locaux. Chacune fonctionne de la même
   1.880 -manière à travers une connexion réseau, il suffit de lui passer une
   1.881 -URL à la place d'un chemin de fichier local.
   1.882 -</para>
   1.883 -
   1.884 -<para><!-- &interaction.tour.outgoing.net; -->
   1.885 -Dans cet exemple, nous allons voir quels changements nous pourrions
   1.886 -transférer vers le dépôt distant, mais le dépôt est, de manière tout
   1.887 -à fait compréhensible, pas configuré pour accepter des modifications
   1.888 -d'utilisateurs anonymes.
   1.889 -<!-- &interaction.tour.push.net; -->
   1.890 -</para>
   1.891 -
   1.892 -</sect2>
   1.893 -</sect1>
   1.894 +    <sect2>
   1.895 +      <title>Windows</title>
   1.896 +
   1.897 +      <para id="x_c">La meilleur version de Mercurial pour Windows est
   1.898 +      TortoiseHg, qui peut être téléchargée ici : <ulink
   1.899 +      url="http://bitbucket.org/tortoisehg/stable/wiki/Home">http://bitbucket.org/tortoisehg/stable/wiki/Home</ulink>
   1.900 +      Ce logiciel n'a aucune dépendance exterieure; il fonctionne
   1.901 +      <quote>et c'est tout</quote>. Il fournit aussi bien les outils en ligne
   1.902 +      de commmande qu'un interface graphique.</para>
   1.903 + 
   1.904 +  <sect2>
   1.905 +
   1.906 +  <sect2>
   1.907 +    <title>Mac OS X</title>
   1.908 +
   1.909 +    <para id="x_a">Lee Cantey publie un installeur de Mercurial pour Mac OS X
   1.910 +    sur <ulink
   1.911 +    url="http://mercurial.berkwood.com">http://mercurial.berkwood.com</ulink>.</para>
   1.912 +  </sect2>
   1.913 +
   1.914 +  <sect2>
   1.915 +    <title>Linux</title>
   1.916 +
   1.917 +        <para id="x_2">Parce que chaque distribution de Linux a ses propres outils de gestion
   1.918 +          de paquets, politiques et rythmes de développements, il est difficile de
   1.919 +          donner un ensemble d'instructions uniques pour installer les binaires de
   1.920 +          Mercurial. La version de Mercurial avec laquelle vous vous retrouverez
   1.921 +          dépendra grandement de l'activité de la personne en charge du paquetage
   1.922 +          pour la distribution.</para>
   1.923 +
   1.924 +        <para id="x_3">Pour rester simple, je me concentrerai sur l'installation de Mercurial
   1.925 +          en ligne de commande, sous les distributions les plus courantes. La
   1.926 +          plupart des distributions fournissent des gestionnaires graphiques de
   1.927 +          paquetage qui vous permettront d'installer Mercurial en quelques clicks.
   1.928 +          Le paquetage devrait se nommer <literal>mercurial</literal>.</para>
   1.929 +
   1.930 +        <itemizedlist>
   1.931 +          <listitem><para id="x_4">Ubuntu et Debian:</para>
   1.932 +            <programlisting>apt-get install mercurial</listitem>
   1.933 +          <listitem><para id="x_5">Fedora:</para>
   1.934 +            <programlisting>yum install mercurial</programlisting>
   1.935 +          <listitem><para id="x_6">Gentoo:</para>
   1.936 +             <programlisting>emerge mercurial</programlisting></listitem>
   1.937 +          <listitem><para id="x_715">OpenSUSE:</para>
   1.938 +            <programlisting>zypper install mercurial</programlisting>
   1.939 +        </itemizedlist>
   1.940 +
   1.941 +      </sect2>
   1.942 +      <sect2>
   1.943 +        <title>Solaris</title>
   1.944 +
   1.945 +        <para id="x_09">SunFreeWare, à <ulink 
   1.946 +        url="http://www.sunfreeware.com">http://www.sunfreeware.com</ulink>,
   1.947 +        fournit des paquet précompilés pour Mercurial.</para>
   1.948 +     </sect2>
   1.949 +  <sect1>
   1.950 +
   1.951 +  <sect1>
   1.952 +    <title>Commencer à utiliser Mercurial</title>
   1.953 +
   1.954 +      <para id="x_e">Pour commencer, nous utiliserons la commande <command role="hg-cmd">hg 
   1.955 +      version</command> pour vérifier si Mercurial est installé proprement. Les 
   1.956 +      informations affichées sur la version ne sont pas réellement importantes en 
   1.957 +      soit, c'est surtout de savoir si elles s'affichent qui nous
   1.958 +      intéresse.</para>
   1.959 +
   1.960 +  &interaction.tour.version;
   1.961 +
   1.962 +  <sect2>
   1.963 +    <title>L'aide intégrée</title>
   1.964 +
   1.965 +    <para id="x_e">Mercurial fournit un système d'aide intégré, ce qui est 
   1.966 +        inestimable quand vous vous retrouvez coincé à essayer de vous rappeler 
   1.967 +        comment lancer une commande. Si vous êtes bloqué, exécutez simplement 
   1.968 +        <command role="hg-cmd">hg help</command>; elle affichera une brève
   1.969 +        liste des commandes, avec une description pour chacune. Si vous demandez 
   1.970 +        de l'aide sur une commande spécifique (voir ci-dessous), elle affichera
   1.971 +        des informations plus détaillées.</para>
   1.972 +
   1.973 +        &interaction.tour.help;
   1.974 +
   1.975 +        <para id="x_10">Pour un niveau d'informations encore plus détaillées 
   1.976 +        (ce dont vous aurez rarement besoin), exécuter <command role="hg-cmd">hg 
   1.977 +        help <option role="hg-opt-global">-v</option></command>.  L'option 
   1.978 +        <option role="hg-opt-global">-v</option> est l'abréviation de 
   1.979 +        <option role="hg-opt-global">--verbose</option>, et indique à Mercurial 
   1.980 +        d'afficher plus d'informations que d'habitude.</para>
   1.981 +
   1.982 +     </sect2>
   1.983 +  </sect1>
   1.984 +  <sect1>
   1.985 +    <title>Travailler avec un dépôt</title>
   1.986 +
   1.987 +    <para id="x_11">Avec Mercurial, tout se déroule au sein du 
   1.988 +      <emphasis>dépôt</emphasis>. Le dépôt d'un projet contient tous 
   1.989 +      les fichiers qui <quote>appartiennent</quote> au projet.</para>
   1.990 +
   1.991 +    <para id="x_12">Il n'y a rien de particulièrement magique au sujet de 
   1.992 +      ce dépôt, c'est simplement une arborescence sur votre système de fichiers 
   1.993 +      de Mercurial traite de manière spéciale. Vous pouvez renommer ou effacer 
   1.994 +      ce répertoire à n'impporte quel moment, en utilisant la ligne de commande 
   1.995 +      ou votre explorateur de fichiers.</para>
   1.996 +
   1.997 +    <sect2>
   1.998 +      <title>Faire une copie locale de votre dépôt</title>
   1.999 +      
  1.1000 +      <para id="x_13"><emphasis>Copier</emphasis> un dépôt est juste un 
  1.1001 +        peu spécial. Bien que vous puissiez utiliser une commande habituelle de 
  1.1002 +        copie pour copier votre dépôt, il vaut mieux utiliser une commande fournie par
  1.1003 +        Mercurial. Cette commande est appelée <command role="hg-cmd">hg clone</command>, 
  1.1004 +        car elle crée une copie identique à un dépôt existant.</para>
  1.1005 +
  1.1006 +     &interaction.tour.clone;
  1.1007 +
  1.1008 +     <para id="x_67c">Un avantage de la commande <command
  1.1009 +     role="hg-cmd">hg clone</command> est que, comme nous l'avons vu ci
  1.1010 +     dessus, elle nous permet de faire de cloner les dépôts à travers le 
  1.1011 +     réseau. Un autre est qu'elle se rappelle d'où a été cloné un dépôt, ce
  1.1012 +     qui est utile quand on veut mettre à jour le clone.</para>
  1.1013 +
  1.1014 +     <para id="x_14">Si votre opération de clonage réussit, vous devriez maintenant
  1.1015 +        avoir un répertoire local appelé <filename class="directory">hello</filename>. 
  1.1016 +        Ce répertoire contiendra quelques fichiers.</para>
  1.1017 +
  1.1018 +     &interaction.tour.ls;
  1.1019 +
  1.1020 +     <para id="x_15">Ces fichiers ont le même contenu et historique dans votre dépôt
  1.1021 +       qu'ils ont dans le dépôt que vous avez cloné.</para>
  1.1022 +
  1.1023 +     <para id="x_16">Chaque dépôt Mercurial est complet, autonome et indépendant. Il
  1.1024 +       contient sa propre copie privée des fichiers du projet et de leur
  1.1025 +       historique. Le clone d'un dépôt se souvient de la localisation du
  1.1026 +       dépôt à partir duquel il a été clôné, mais il ne communique pas avec
  1.1027 +       ce dernier, ou un autre, à moins que vous ne lui demandiez.</para>
  1.1028 +
  1.1029 +     <para id="x_17">Ce que tout ceci signifie pour le moment est que nous sommes libres
  1.1030 +       d'expérimenter avec ce dépôt, confiants dans le fait qu'il s'agit d'un
  1.1031 +       <quote>bac à sable</quote> qui n'affectera personne d'autre.</para>
  1.1032 +
  1.1033 +    </sect2>  
  1.1034 +    <sect2>
  1.1035 +      <title>Quel est le contenu d'un dépôt ?</title>
  1.1036 +
  1.1037 +      <para id="x_18">Prêtons plus attention un instant au contenu d'un dépôt. 
  1.1038 +        Nous voyons qu'il contient un répertoire nommé <filename class="directory">.hg
  1.1039 +        </filename>. C'est ici que Mercurial conserve toutes ses
  1.1040 +        métadonnées.</para>
  1.1041 +
  1.1042 +       &interaction.tour.ls-a; 
  1.1043 +
  1.1044 +      <para id="x_19">Le contenu du répertoire <filename class="directory">.hg
  1.1045 +        </filename> et ses sous répertoires sont les seuls propres à Mercurial. 
  1.1046 +        Tous les autres fichiers et répertoires dans le dépôt sont à vous, et 
  1.1047 +        vous pouvez en faire ce que vous voulez.</para>
  1.1048 +
  1.1049 +      <para id="x_1a">Pour introduire un peu de terminologie, le répertoire 
  1.1050 +        <filename class="directory">.hg</filename> est un <quote>vrai</quote> 
  1.1051 +        dépôt, et tous les fichiers et les répertoires qui coexistent avec lui, 
  1.1052 +        sont désignés sous le nom <emphasis>espace de travail</emphasis>. Une 
  1.1053 +        manière facile de se rappeler cette distinction est de retenir que le 
  1.1054 +        <emphasis>dépôt</emphasis> contient l'<emphasis>historique</emphasis>
  1.1055 +        de votre projet, alors que l'<emphasis>espace de travail</emphasis> 
  1.1056 +        contient un "<emphasis>snapshot</emphasis>"  de votre projet à un certain 
  1.1057 +        point de son historique.</para>
  1.1058 +
  1.1059 +    </sect2>
  1.1060 +  </sect1>
  1.1061 +  <sect1>
  1.1062 +    <title>Une promenade dans l'historique</title>
  1.1063 +
  1.1064 +    <para id="x_1b">Une des premières choses que vous aurez envie 
  1.1065 +      de faire avec un nouveau dépôt, sera de comprendre son historique. 
  1.1066 +      La commande <command role="hg-cmd">hg log</command> vous donne une 
  1.1067 +      vue de l'historique.</para>
  1.1068 +
  1.1069 +    &interaction.tour.log; -->
  1.1070 +
  1.1071 +    <para "x_1c">Par défaut, cette commande affiche à l'écran un bref paragraphe pour chaque
  1.1072 +      révision enregistrée pour ce projet. Dans la terminologie de Mercurial, nous
  1.1073 +      appelons chacun de ces évènements enregistrés un <emphasis>changeset</emphasis>, parce
  1.1074 +      qu'il contient un ensemble de modifications sur plusieurs fichiers.</para>
  1.1075 +
  1.1076 +    <para id="x_1d">La commande <command role="hg-cmd">hg log</command> affiche 
  1.1077 +    ainsi ces informations:</para>
  1.1078 +
  1.1079 +    <itemizedlist>
  1.1080 +      <listitem><para id="x_1e"><literal>changeset</literal>: Ce champ contient 
  1.1081 +        un nombre, séparé par deux points (:), d'une chaine hexadécimale. Il 
  1.1082 +        s'agit en fait d'<emphasis>identifiants</emphasis>  d'un changeset. Il y a 
  1.1083 +        deux identifiants car le numéro de la révision est plus court et plus à 
  1.1084 +        facile à saisir qu'une séquence hexadécimale.</para>
  1.1085 +      </listitem>
  1.1086 +      <listitem><para id="x_1f"><literal>user</literal>: L'identité de la personne 
  1.1087 +        qui a créée ce  %%% laisser le terme anglais car il sera affiché
  1.1088 +        changeset. C'est un champ libre de forme, mais la plupart du
  1.1089 +        temps il contient le nom et l'email de la personne.</para>
  1.1090 +      </listitem>
  1.1091 +      <listitem><para id="x_20"><literal>date</literal>: La date et l'heure à 
  1.1092 +        laquelle le \textit{changeset a été créé, ainsi que le fuseau horaire dans 
  1.1093 +        laquelle il a été créé. <!--TODO: Translate 'timezone' properly : FUSEA -->. (La 
  1.1094 +        date et l'heure sont locales à ce \textit{fuseau}, elles indiquent donc quelle 
  1.1095 +        date et heure il était pour la personne qui a créé ce <!--%%%TODO: je suppose (quelle 
  1.1096 +        "heure")  OUI --> changeset.</para>
  1.1097 +      </listitem>
  1.1098 +      <listitem><para id="x_21"><literal>résumé</literal>: La première du 
  1.1099 +        message que le créateur a associé à son changeset pour le décrire.</para>
  1.1100 +      </listitem>
  1.1101 +      <!-- TODO: Missing items here ! -->
  1.1102 +    </itemizedlist>
  1.1103 +
  1.1104 +    <para id="x_22">Par défaut, la commande <command role="hg-cmd">hg log</command> 
  1.1105 +      n'affiche qu'un résumé, il manque
  1.1106 +      beaucoup de détails.</para>
  1.1107 +
  1.1108 +    <para id="x_23">La figure <xref linkend="fig:tour-basic:history"/> fournit une 
  1.1109 +      représentation graphique de l'historique du dépôt <filename class="directory">hello
  1.1110 +      </filename>, pour rendre plus facile de voir dans quelle direction 
  1.1111 +      l'historique se <quote>déroule</quote>. Nous reviendrons régulièrement 
  1.1112 +      sur cette représentation dans ce chapitre et ceux qui suivent.</para>
  1.1113 +
  1.1114 +
  1.1115 +    <figure id="fig:tour-basic:history">
  1.1116 +      <title>Graphical history of the <filename
  1.1117 +                    class="directory">hello</filename> repository</title>
  1.1118 +      <mediaobject>
  1.1119 +        <imageobject><imagedata fileref="figs/tour-history.png"/></imageobject>
  1.1120 +        <textobject><phrase>XXX add text</phrase></textobject>
  1.1121 +      </mediaobject>
  1.1122 +    </figure>
  1.1123 +
  1.1124 +
  1.1125 +    <sect2>
  1.1126 +      <title>Changesets, révisions, et collaboration</title>
  1.1127 +      
  1.1128 +      <para id="x_25">Comme l'anglais est réputé pour être un langage maladroit, et que l'informatique
  1.1129 +        est la source de bien des erreurs de terminologies (pourquoi utiliser un
  1.1130 +        seul terme quand quatre feront l'affaire ?), la gestion de version a une
  1.1131 +        variété de mots et de phrases qui veulent dire la même chose. Si vous
  1.1132 +        discutez d'historique de Mercurial avec d'autres personnes,
  1.1133 +<!--%%%TODO: ça ne veut rien dire: il faut supprimer une des personnes : soit "quelqu'un",
  1.1134 +% soit "à d'autres personnes" -->
  1.1135 +        vous constaterez que souvent le mot <quote>changeset</quote> est contracté simplement
  1.1136 +        en <quote>change</quote> ou (à l'écrit) <quote>cset</quote>, et même parfois un
  1.1137 +        changeset simplement <quote>révision</quote>, abrégé en <quote>rev</quote>.</para>
  1.1138 +
  1.1139 +      <para id="x_26">Bien que le <emphasis>mot</emphasis> que vous utilisez pour 
  1.1140 +        désigner le concept de changeset importe peu, l'<emphasis>identifiant</emphasis> 
  1.1141 +        que vous utilisez pour désigner un <emphasis>changeset</emphasis> spécifique 
  1.1142 +        a une grande importance. Rappelez vous que le champ changeset affiché par la
  1.1143 +        commande <command role="hg-cmd">hg log</command> identifie un changeset à la fois avec
  1.1144 +        un numéro de révision et une séquence hexadécimale.</para>
  1.1145 +
  1.1146 +      <itemizedlist>
  1.1147 +        <listitem><para id="x_27">Le numéro de révision est <emphasis>seulement 
  1.1148 +        valable dans ce dépôt</emphasis>,</para></listitem>
  1.1149 +        <listitem><para id="x_28">La séquence hexadécimale est un
  1.1150 +        <emphasis>identifiant permanent, et invariant</emphasis> qui 
  1.1151 +        pourra toujours être associé au changeset exact de <emphasis>chaque</emphasis> 
  1.1152 +        copie de votre dépôt.</para></listitem></itemizedlist>
  1.1153 +
  1.1154 +     <para id="x_29">La distinction est importante. Si vous envoyez un email 
  1.1155 +       à quelqu'un en parlant de la <quote>révision 33</quote>, il est très 
  1.1156 +       probable que sa révision 33 <emphasis>ne sera pas la même</emphasis> 
  1.1157 +       que la votre. La raison de ceci est que le numéro de révision dépend 
  1.1158 +       de l'ordre dans lequel les modifications sont arrivées dans le dépôt, 
  1.1159 +       et il n'y a aucune garantie que les mêmes changements soient arrivés 
  1.1160 +       dans le même ordre dans différents dépôts. Trois modifications
  1.1161 +       <literal>a,b,c</literal> peuvent aisément apparaitre dans un dépôt 
  1.1162 +       comme <literal>0,1,2</literal>, et dans un autre comme <literal>0,2,1
  1.1163 +       </literal>.</para>
  1.1164 +
  1.1165 +    <para id="x_2a">Mercurial utilise les numéros de révision uniquement comme des raccourcis
  1.1166 +      pratiques. Si vous devez discuter d'un \textit{changeset} avec quelqu'un,
  1.1167 +      ou identifer un \textit{changeset} pour une quelquonque %%%TODO: our : "pour" ou "ou"
  1.1168 +      raison (par exemple, un rapport de \textit{bug}), utilisez la séquence
  1.1169 +      hexadécimale.</para>
  1.1170 +
  1.1171 +    </sect2>
  1.1172 +    <sect2>
  1.1173 +      <title>Afficher une révision spécifique</title>
  1.1174 +
  1.1175 +      <para id="x_2b">Pour réduire la sortie de <command role="hg-cmd">hg log
  1.1176 +        </command> à une seule révision, utilisez l'option <option role="hg-opt-log">-r
  1.1177 +        </option> (ou <option role="hg-opt-log">--rev</option>). Vous pouvez utiliser
  1.1178 +        le numéro de révision ou la séquence hexadécimale comme identifiant, et
  1.1179 +        demander autant de révisions que vous le souhaitez.</para>
  1.1180 +
  1.1181 +      &interaction.tour.log-r;
  1.1182 +
  1.1183 +      <para id="x_2c">Si vous voulez voir l'historique de plusieurs 
  1.1184 +      révisions sans avoir à les énumérer, vous pouvez utiliser la 
  1.1185 +      <emphasis>intervalle de numérotation</emphasis> qui vous permet 
  1.1186 +      d'exprimer l'idée <quote>je veux toutes les révisions entre $a$ 
  1.1187 +      et $b$, inclus</quote>.
  1.1188 +
  1.1189 +     &interaction.tour.log.range;
  1.1190 +
  1.1191 +     <para id="x_2d">Mercurial respecte aussi l'ordre dans lequel 
  1.1192 +     vous spécifiez les révisions, ainsi 
  1.1193 +     <command role="hg-cmd">hg log -r 2:4</command> affichera
  1.1194 +     <literal>2,3,4</literal> alors que <command role="hg-cmd">hg log -r 4:2</command> 
  1.1195 +     affichera <literal>4,3,2</literal>.</para>
  1.1196 +
  1.1197 +    </sect2>  
  1.1198 +    <sect2>
  1.1199 +      <title>Informations détaillées</title>
  1.1200 +
  1.1201 +      <para id="x_2e">Le résumé affiché par <command role="hg-cmd">hg log</command> 
  1.1202 +        est suffisant si vous savez déjà ce que vous cherchez. En 
  1.1203 +        revanche, vous aurez probablement besoin de voir une description 
  1.1204 +        complète du changement, ou une liste des fichiers modifiés si vous 
  1.1205 +        cherchez à déterminer qu'un changeset est bien celui que vous <!--
  1.1206 +     %%%TODO: les propositions sont mal construites : après un "si...." il
  1.1207 +     faut une proposition sans "si... donc ici : "si ... recherchez", ben
  1.1208 +      quoi?  -->
  1.1209 +        recherchez. L'option \hgopt{-v} de la commande <command role="hg-cmd">hg 
  1.1210 +        log</command> (ou <option role="hp-opt-global">--verbose</option>) vous 
  1.1211 +        donne ces informations supplémentaires.</para>
  1.1212 +
  1.1213 +      &interaction.tour.log-v; -->
  1.1214 +
  1.1215 +      <para id="x_2f">Si vous voulez voir à la fois la description 
  1.1216 +        et le contenu d'une modification, ajouter l'option <option 
  1.1217 +        role="hg-opt-log">-p</option> (ou <option role="hg-opt-log">
  1.1218 +        --patch</option>). Ceci affiche le contenu d'une modification 
  1.1219 +        comme un <emphasis>diff unifié</emphasis>
  1.1220 +        <!-- \footnote{NdT: \textit{unified diff}} -->
  1.1221 +        (si vous n'avez jamais vu de diff unifié avant, consultez la 
  1.1222 +        section <xref linkend="sec:mq:patch"/> pour un rapide 
  1.1223 +        survol).</para>
  1.1224 +
  1.1225 +      &interaction.tour.log-vp;
  1.1226 +
  1.1227 +      <para id="x_67e">L'option <option role="hg-opt-log">-p</option> option
  1.1228 +       est incroyablement utile, il est donc important dans s'en 
  1.1229 +       rappeller.</para>
  1.1230 +
  1.1231 +    </sect2>
  1.1232 +  </sect1>
  1.1233 +  <sect1>
  1.1234 +    <title>Tout sur les options de commandes</title>
  1.1235 +    
  1.1236 +    <para id="x_30">Avant d'aller plus loin sur le fonctionnement 
  1.1237 +      des commandes de Mercurial, étudions un moment comment elles 
  1.1238 +      fonctionnent de manière générale. Vous trouverez ça probablement 
  1.1239 +      utile pour la suite de notre parcours.</para>
  1.1240 +
  1.1241 +    <para id="x_31">Mercurial utilise une approche directe et cohérente 
  1.1242 +      pour interpréter <!--%%%TODO: une manière d'approche ?--> les 
  1.1243 +      options que vous passez aux commandes. Il suit une convention commune 
  1.1244 +      à la plupart des systèmes Unix et Linux modernes.</para>
  1.1245 +
  1.1246 +    <itemizedlist>
  1.1247 +      <listitem><para id="x_32">Chaque option a un nom complet. Par exemple, 
  1.1248 +        comme nous l'avons déjà vu, la commande <command role="hg-cmd">hg 
  1.1249 +        log</command> accepte l'option <option role="hg-opt-log">--rev
  1.1250 +        </option>.</para>
  1.1251 +      </listitem>
  1.1252 +      <listitem><para id="x_33">La plupart des options disposent de 
  1.1253 +        noms abrégés. Aussi, au lieu d'utiliser <option role="hg-opt-log">--rev
  1.1254 +        </option>, vous pouvez utiliser <option role="hg-opt-log">-r</option>. 
  1.1255 +        (Les options qui  n'ont pas de noms abrégés sont généralement 
  1.1256 +        rarement utilisées).</para>
  1.1257 +      </listitem>
  1.1258 +      <listitem><para id="x_34">Les noms complets commencent par deux 
  1.1259 +        tirets (i.e. <option role="hg-opt-log">--rev</option>),
  1.1260 +        alors que les options courtes commencent avec un seul (i.e. 
  1.1261 +        <option role="hg-opt-log">-r</option>).</para>
  1.1262 +      </listitem>
  1.1263 +     <listitem><para id="x_35">Les noms des options sont cohérents 
  1.1264 +       entre les commandes. Par exemple, chaque commande qui accepte 
  1.1265 +       un changeset ID ou un numéro de révision accepte aussi <option 
  1.1266 +       role="hg-opt-log">-r</option> et <option role="hg-opt-log">--rev
  1.1267 +       </option> comme arguments.</para>
  1.1268 +     </listitem>
  1.1269 +   </itemizedlist>
  1.1270 +
  1.1271 +   <para id="x_36">Dans les exemples de ce livre, j'utilise les noms abrégés 
  1.1272 +     plutôt que les noms complets. Ceci est une préférence personnelle, pas 
  1.1273 +     une recommandation.</para>
  1.1274 +
  1.1275 +   <para id="x_37">La plupart des commandes qui affichent une quelconque sortie 
  1.1276 +     à l'écran, afficheront davantage avec l'option <option role="hg-opt-global">
  1.1277 +     -v</option> (ou <option role="hg-opt-global">--verbose</option>), et
  1.1278 +     moins avec l'option <option role="hg-opt-global">-q</option> (ou 
  1.1279 +     <option role="hg-opt-global">--quiet</option>).</para>
  1.1280 +
  1.1281 +    <note>
  1.1282 +      <title>Option naming consistency</title>
  1.1283 +      
  1.1284 +      <para id="x_680">Presque toujours, les commandes de Mercurial utilise
  1.1285 +      des noms d'options cohérentes pour référer à des concepts identiques.
  1.1286 +      Par exemple, si une commande concerne les changesets, vous les
  1.1287 +      identifierais toujours avec l'option <option
  1.1288 +      role="hg-opt-log">-r</option>. Cette utilisation cohérente des noms
  1.1289 +      d'options permet de mémoriser plus facilement quelles options accepte
  1.1290 +      une commande.</para>
  1.1291 +   </note>
  1.1292 +
  1.1293 +
  1.1294 +  </sect1>
  1.1295 +  <sect1>
  1.1296 +    <title>Faire et vérifier des modifications</title>
  1.1297 +
  1.1298 +    <para id="x_38">Maintenant que nous avons une bonne idée des 
  1.1299 +      commandes pour consulter l'historique de Mercurial, regardons 
  1.1300 +      comment faire des modifications et les examiner.</para>
  1.1301 +     
  1.1302 +   <para id="x_39">La première chose que nous allons faire 
  1.1303 +     c'est isoler notre expérience dans un dépôt à part. Nous 
  1.1304 +     allons utiliser la commande <command role="hg-cmd">hg 
  1.1305 +     clone</command>, mais nous n'avons pas besoin de faire une 
  1.1306 +     copie de dépôt distant. Comme nous avons déjà une copie locale, 
  1.1307 +     nous pouvons juste faire un clone de celle-ci à la place. C'est 
  1.1308 +     beaucoup plus rapide que de faire une copie à travers le réseau, 
  1.1309 +     et un dépôt cloné localement prend également moins d'espace 
  1.1310 +     disque.<footnote></footnote>
  1.1311 +       <para id="x_681">L'économie d'espace disque apparait clairement
  1.1312 +       quand les dépôts source et destination sont sur le même système
  1.1313 +       de fichier, où dans ce cas, Mercurial utilisera des liens physiques
  1.1314 +       pour effectuer des partages copie-lors-des-écritures de ses 
  1.1315 +       métadonnées internes. Si cette explication ne signifie rien pour
  1.1316 +       vous, ne vous inquietez pas: tout ceci se passe de manière
  1.1317 +       transparente et automatiquement, et vous n'avez pas du tout
  1.1318 +       besoin de comprendre ceci.</para>
  1.1319 +       </footnote>.</para>
  1.1320 +   
  1.1321 +   &interaction.tour.reclone;
  1.1322 +
  1.1323 +   <para id="x_3a">On notera au passage qu'il est souvent considéré 
  1.1324 +     comme une bonne pratique de conserver une copie <quote>immaculée</quote> 
  1.1325 +     du dépôt distant, à partir de laquelle vous pourrez faire des 
  1.1326 +     copies locales temporaires pour créer des <quote>bacs à sable</quote> 
  1.1327 +     pour chaque tâche sur laquelle vous souhaitez travailler. Ceci 
  1.1328 +     vous permet de travailler sur plusieurs choses en parallèle, 
  1.1329 +     chacune isolée les unes des autres en attendant que ces tâches 
  1.1330 +     soient finies et que vous soyez prêt à les réintégrer. Parce 
  1.1331 +     que les copies locales sont peu coûteuses, il est très rapide 
  1.1332 +     de créer ou détruire des dépôts dès que vous en avez besoin.
  1.1333 +   </para>
  1.1334 +
  1.1335 +   <para id="x_3b">Dans notre <filename class="directory">my-hello
  1.1336 +     </filename> dépôts, nous avons un fichier <filename>hello.c
  1.1337 +     </filename> qui contient le classique <quote>hello, world</quote>.
  1.1338 +   </para>
  1.1339 +   
  1.1340 +   &interaction.tour.cat1;
  1.1341 +
  1.1342 +   <para id="x_682">Editons ce fichier pour qu'il affiche une autre
  1.1343 +   ligne sur la sortie standard.</para>
  1.1344 +
  1.1345 +   &interaction.tour.cat2;
  1.1346 +
  1.1347 +   <para id="x_3c">La commande Mercurial <command role="hg-cmd">hg status
  1.1348 +     </command> nous dira ce que Mercurial sait des fichiers du dépôts.
  1.1349 +   </para>
  1.1350 +
  1.1351 +   &interaction.tour.status;
  1.1352 +
  1.1353 +   <para id="x_3d">La commande <command role="hg-cmd">hg status</command>
  1.1354 +     n'affichera pas le contenu des fichiers, mais une ligne commençant
  1.1355 +     par <quote><literal>M</literal></quote> pour <filename>hello.c
  1.1356 +     </filename>. A moins que vous lui demandiez, la commande <command 
  1.1357 +     role="hg-cmd">hg status</command> n'affichera aucune informations
  1.1358 +     sur les fichiers que vous n'avez pas modifié.</para>
  1.1359 +
  1.1360 +   <para id="x_3d">Le <quote><literal>M</literal></quote> indique que
  1.1361 +     Mercurial a remarqué que nous avons modifié le fichier 
  1.1362 +     <filename>hello.c</filename>. Nous n'avons pas besoin
  1.1363 +     <emphasis>d'informer</emphasis> Mercurial que nous allons modifier le
  1.1364 +     fichier avant de commencer à le faire, ou que nous avions modifier le
  1.1365 +     fichier avant de le faire, il est capable de découvrir ça tout seul.
  1.1366 +   </para>
  1.1367 +
  1.1368 +   <para id="x_3f">C'est déjà pratique de savoir que nous avons modifié le
  1.1369 +   fichier <filename>hello.c</filename>, mais nous préférerions savoir
  1.1370 +   exactement <emphasis>ce que</emphasis> nous avons changé. Pour ceci, nous
  1.1371 +   utilisons la commande <command role="hg-cmd">hg diff</command>.</para>
  1.1372 +
  1.1373 +   &interaction.tour.diff;
  1.1374 +
  1.1375 +   <tip>
  1.1376 +     <title>Comprendre les patches</title>
  1.1377 +   
  1.1378 +     <para id="x_683">Penser à jeter un oeil au site <xref
  1.1379 +     linkend="sec:mq:patch"/> si vous n'arrivez pas à lire la sortie
  1.1380 +     ci-dessus.</para>
  1.1381 +   </tip>
  1.1382 + </sect1>
  1.1383 + <sect1>
  1.1384 +   <title>Enregister vos modifications dans une nouvelle révision</title>
  1.1385 +   
  1.1386 +   <para id="x_40">Nous pouvons modifier des fichiers, compiler et 
  1.1387 +     tester nos modifications, et utiliser les commandes 
  1.1388 +     <command role="hg-cmd">hg status</command> et <command role="hg-cmd">hg 
  1.1389 +     diff</command> pour voir les modifications effectuées, jusqu'au 
  1.1390 +     moment où nous serons assez satisfaits
  1.1391 +     pour décider d'enregistrer notre travail dans un \textit{changeset}.
  1.1392 +   </para>
  1.1393 +
  1.1394 +   <para id="x_41">La commande <command role="hg-cmd">hg commit</command> 
  1.1395 +     vous laisse créer une nouvelle révision, nous désignerons généralement 
  1.1396 +     cette opération par <quote>faire un commit</quote> ou <quote>committer
  1.1397 +     </quote>.</para>
  1.1398 +
  1.1399 +   <sect2>
  1.1400 +   <title>Définir le nom d'utilisateur</title>
  1.1401 +
  1.1402 +     <para id="x_42">Quand vous exécutez la commande <command role="hg-cmd">
  1.1403 +       hg commit</command> pour la première fois, il n'est pas garanti
  1.1404 +       qu'elle réussisse du premier coup. En effet, Mercurial enregistre
  1.1405 +       votre nom et votre adresse avec chaque modification que vous effectuez, 
  1.1406 +       de manière à ce que vous soyez capable (ou d'autres le soient) de 
  1.1407 +       savoir qui a fait quelle modification. Mercurial essaye automatiquement 
  1.1408 +       de découvrir un nom d'utilisateur qui ait un minimum de sens 
  1.1409 +       pour effectuer l'opération de commit avec. Il va essayer chacune 
  1.1410 +       des méthodes suivantes, dans l'ordre:</para>
  1.1411 +     <orderedlist>
  1.1412 +       <listitem><para id="x_43">Si vous spécifiez l'option <option 
  1.1413 +         role="hg-opt-commit">-u</option> avec la commande
  1.1414 +         <command role="hg-cmd">hg commit</command>, suivi d'un nom 
  1.1415 +         d'utilisateur, ceci aura toujours la priorité sur les autres 
  1.1416 +         méthodes ci dessous.</para></listitem>
  1.1417 +       <listitem><para id="x_44">Si vous avez défini une variable d'environnement 
  1.1418 +         <envar>HGUSER</envar>, c'est cette valeur qui est alors utilisée.</para></listitem>
  1.1419 +      <listitem><para id="x_45">Si vous créez un fichier nommé 
  1.1420 +        <filename role="special">.hgrc</filename> dans votre
  1.1421 +        répertoire \textit{home}, avec une entrée <envar 
  1.1422 +        role="rc-item-ui">username</envar>, c'est la valeur associée 
  1.1423 +        qui sera utilisée. Pour voir à quoi ressemble le contenu de ce fichier 
  1.1424 +        regardez la section <xref linkend="sec:tour-basic:username"/> 
  1.1425 +        ci-dessous.</para></listitem>
  1.1426 +      <listitem><para id="x_46">Si vous avez défini une variable 
  1.1427 +        d'environnement <envar>EMAIL</envar> celle ci sera utilisée ensuite.</para></listitem>
  1.1428 +      <listitem><para id="x_47">Enfin, Mercurial interrogera votre système pour 
  1.1429 +        trouver votre nom d'utilisateur local ainsi que le nom de la machine hôte, 
  1.1430 +        et il fabriquera un nom d'utilisateur à partir de ces données. Comme
  1.1431 +        il arrive souvent que ce genre de noms soit totalement inutile, il vous
  1.1432 +        préviendra en affichant un message d'avertissement.</para></listitem>
  1.1433 +   </orderedlist>
  1.1434 +
  1.1435 +   <para id="x_48">Si tous ces mécanismes échouent, Mercurial n'exécutera pas
  1.1436 +     la commande, affichant un message d'erreur. Dans ce cas, il ne vous 
  1.1437 +     laissera pas effectuer de commit tant que vous n'aurez pas défini un nom
  1.1438 +     d'utilisateur.</para>
  1.1439 +
  1.1440 +   <para id="x_49">Vous devriez penser à utiliser la variable d'environement 
  1.1441 +     <envar>HGUSER</envar> et l'option <option role="hg-opt-commit">-u
  1.1442 +     </option> comme moyen pour <emphasis>changer</emphasis> le nom d'
  1.1443 +     utilisateur} par défaut. Pour une utilisation normale, la manière la 
  1.1444 +     plus simple et robuste d'opérer est de créer un fichier 
  1.1445 +     <filename role="special">.hgrc</filename>, voir ci-dessous pour 
  1.1446 +     les détails à ce sujet.</para>
  1.1447 +
  1.1448 +   <sect3 id="sec:tour-basic:username">
  1.1449 +     <title>Créer un fichier de configuration pour Mercurial</title>
  1.1450 +
  1.1451 +     <para id="x_4a">Pour définir un nom d'utilisateur, utilisez votre 
  1.1452 +       éditeur de texte favori pour créer un fichier <filename 
  1.1453 +       role="special">.hgrc</filename> dans votre répertoire home. 
  1.1454 +       Mercurial va utiliser ce fichier pour retrouver votre 
  1.1455 +       configuration personnelle. Le contenu initial devrait 
  1.1456 +       ressembler à ceci:</para>
  1.1457 +
  1.1458 +     <tip>
  1.1459 +       <title><quote>Home directory</quote> on Windows</title>
  1.1460 +          
  1.1461 +       <para id="x_716">Quand on parle de répertoire home, sur une version
  1.1462 +         anglaise d'une installation de Windows, il s'agira habituellement
  1.1463 +         d'un répertoire nommée comme votre nom dans <filename>C:\Documents 
  1.1464 +         and Settings</filename>. Vous pouvez trouver de quelle répertoire
  1.1465 +         il s'agit en lançant une fenêtre d'interpréteur de commande et en
  1.1466 +         exécutant la commande suivante:</para>
  1.1467 +        <screen><prompt>C:\</prompt> <userinput>echo %UserProfile</userinput></screen>
  1.1468 +     </tip>
  1.1469 + 
  1.1470 +     <programlisting># This is a Mercurial configuration file.
  1.1471 +[ui]
  1.1472 +username = Firstname Lastname &lt;email.address@domain.net&gt;</programlisting>
  1.1473 +
  1.1474 +     <para id="x_4b">La ligne avec <literal>[ui]</literal> commence une
  1.1475 +       <emphasis>section</emphasis> du fichier de configuration, ainsi la ligne
  1.1476 +       <quote><literal>username = ...</literal></quote> signifie <quote>
  1.1477 +       définir la valeur de l'élément <literal>username</literal> dans la
  1.1478 +       section <literal>ui</literal></quote>. Une section continue jusqu'à ce
  1.1479 +       qu'une nouvelle commence, ou que la fin du fichier soit atteinte.
  1.1480 +       Mercurial ignore les lignes vides et traite tout texte situé à la suite
  1.1481 +       d'un <quote><literal>#</literal></quote> jusqu'à la fin de la ligne
  1.1482 +       comme un commentaire.</para>
  1.1483 +
  1.1484 +      </sect3>
  1.1485 +      <sect3>
  1.1486 +        <title>Choisir un nom d'utilisateur</title>
  1.1487 +
  1.1488 +       <para id="x_4c">Vous pouvez utiliser n'importe quelle valeur 
  1.1489 +         pour votre <literal>username</literal>, car cette information 
  1.1490 +         est destinée à d'autres personnes et non à être interprétée 
  1.1491 +         par Mercurial. La convention que la plupart des personnes
  1.1492 +         suivent est d'utiliser leurs noms suivies de leurs adresses emails,
  1.1493 +         comme montrée ci-dessus:</para>
  1.1494 +      <note>
  1.1495 +        <para id="x_4d">Le mécanisme interne du serveur web intégré à Mercurial,
  1.1496 +          masque les adresses emails, pour rendre plus difficile leurs
  1.1497 +          récupérations par les outils utilisés par les spammmers.
  1.1498 +          Ceci réduit la probabilité que de recevoir encore plus de
  1.1499 +          spam si vous vous publiez un dépôt sur internet.</para>
  1.1500 +      </note>
  1.1501 +    </sect3>
  1.1502 +  </sect2>
  1.1503 +  <sect2>
  1.1504 +    <title>Rédiger un message de \textit{commit}</title>
  1.1505 +
  1.1506 +    <para id="x_4e">Lorsqu'on effectue une opération de commit, Mercurial
  1.1507 +      lance automatiquement un éditeur de texte pour permettre de saisir
  1.1508 +      un message qui décrira les modifications effectuées dans cette
  1.1509 +      révision. Ce message est nommé le <emphasis>message de commit</emphasis>. 
  1.1510 +      Ce sera un enregistrement pour tout lecteur expliquant le pourquoi 
  1.1511 +      et le comment de vos modifications, et il sera affiché par la 
  1.1512 +      commande <command role="hg-cmd">hg log</command>.</para>
  1.1513 +
  1.1514 +     &interaction.tour.commit; 
  1.1515 +
  1.1516 +    <para id="x_4f">L'éditeur que la commande <command role="hg-cmd">hg 
  1.1517 +    commit</command> déclenche ne contiendra qu'une ligne vide suivi 
  1.1518 +    d'un certain nombre de lignes commençant par <quote><literal>HG:
  1.1519 +    </literal></quote>.</para>
  1.1520 +
  1.1521 +    <programlisting>
  1.1522 +    This is where I type my commit comment.
  1.1523 +    
  1.1524 +    HG: Enter commit message.  Lines beginning with 'HG:' are removed.
  1.1525 +    HG: --
  1.1526 +    HG: user: Bryan O'Sullivan &lt;bos@serpentine.com&gt;
  1.1527 +    HG: branch 'default'
  1.1528 +    HG: changed hello.c</programlisting>
  1.1529 +
  1.1530 +
  1.1531 +    <para id="x_50">Mercurial ignore les lignes qui commencent 
  1.1532 +      avec <quote><literal>HG:</literal></quote>, il ne les 
  1.1533 +      utilise que pour nous indiquer quels fichiers modifiés il se
  1.1534 +      prépare à \textit{commiter}. Modifier ou effacer ces lignes n'a
  1.1535 +      aucune conséquence sur l'opération de commit.
  1.1536 +   </para>
  1.1537 +
  1.1538 +  </sect2>
  1.1539 +  <sect2>
  1.1540 +    <title>Rédiger un message \textit{approprié}</title>
  1.1541 +
  1.1542 +    <para id="x_51">Comme <command role="hg-cmd">hg log</command> n'affiche
  1.1543 +      que la première ligne du message de commit par défaut, il est souvent
  1.1544 +      considéré comme une bonne pratique de rédiger des messages de commit
  1.1545 +      qui tiennent sur une seule ligne. Voilà un exemple concret de message 
  1.1546 +      de commit qui <emphasis>ne suit pas</emphasis> cette directive, et qui a donc
  1.1547 +      un résumé peu lisible.</para>
  1.1548 +
  1.1549 +    <programlisting>
  1.1550 +changeset:   73:584af0e231be
  1.1551 +user:        Censored Person &lt;censored.person@example.org&gt;
  1.1552 +date:        Tue Sep 26 21:37:07 2006 -0700
  1.1553 +summary:     include buildmeister/commondefs.   Add an exports and install
  1.1554 +    </programlisting>
  1.1555 +
  1.1556 +    <para id="x_52">A ce sujet, il faut noter qu'il n'existe pas de règle 
  1.1557 +      absolue dans ce domaine. Mercurial lui-même n'interprète pas les 
  1.1558 +      contenus des messages de commit, ainsi votre projet est libre de 
  1.1559 +      concevoir différentes politiques de mise en page des messages.</para>
  1.1560 +    <para id="x_53">Ma préférence personnelle va au message court, mais 
  1.1561 +    informatif, qui offre des précisions supplémentaires par rapport à ce 
  1.1562 +    que pourrait m'apprendre une commande <command role="hg-cmd">hg log 
  1.1563 +    --patch</command>.</para>
  1.1564 +    <para id="x_55">Si vous exécutez la commande <command role="hg-cmd">hg
  1.1565 +     commit</command> sans aucun argument, elle enregistre tout les 
  1.1566 +     changements qui ont été fait, et qui sont indiqué par les commandes
  1.1567 +     <command role="hg-cmd">hg status</command> et  <command 
  1.1568 +     role="hg-cmd">hg diff</command>.</para>
  1.1569 +   <note>
  1.1570 +     <title>Une surprise pour les utilisateurs habitués à Subversion</title>
  1.1571 +
  1.1572 +     <para id="x_717">Comme n'importe quel autre commande de Mercurial, si
  1.1573 +     vous soumettez pas de manière explicite les noms des fichiers à
  1.1574 +     committer à la commande <command role="hg-cmd">hg commit</command>, elle
  1.1575 +     va travailler sur l'ensemble du répertoire de travail. Soyez conscient
  1.1576 +     de ceci si vous venez du monde Subversion ou CVS, car vous pourriez
  1.1577 +     attendre qu'elle opère uniquement le répertoire courant et ses sous
  1.1578 +     répertoires.</para>
  1.1579 +   </note>
  1.1580 +  </sect2>
  1.1581 +  <sect2>
  1.1582 +    <title>Annuler un \textit{commit}</title>
  1.1583 +
  1.1584 +      <para id="x_54">Si, en rédigeant le message, vous décidez que 
  1.1585 +        finalement vous ne voulez pas effectuer ce commit, il suffit 
  1.1586 +        de quitter simplement l'éditeur sans sauver. Ceci n'aura aucune 
  1.1587 +        conséquence sur le dépôt ou les fichiers du répertoire de 
  1.1588 +        travail.</para>
  1.1589 +  </sect2>
  1.1590 +
  1.1591 +  <sect2>
  1.1592 +  <sect2>
  1.1593 +    <title>Admirer votre travail</title>
  1.1594 +
  1.1595 +    <para id="x_56">Une fois que votre \textit{commit} est terminé, vous pouvez utiliser
  1.1596 +      la commande <command role="hg-cmd">hg tip</command> pour afficher le \textit{changeset} que nous
  1.1597 +      venons de créer. Cette commande produit une sortie à l'écran qui est
  1.1598 +      identique à celle du <command role="hg-cmd">hg log</command>, mais qui n'affiche que la dernière
  1.1599 +      révision du dépôt.</para>
  1.1600 +
  1.1601 +     &interaction.tour.tip; 
  1.1602 +
  1.1603 +    <para id="x_57">On fait couramment référence à la dernière révision 
  1.1604 +      du dépôt comme étant la <emphasis>révision tip</emphasis>, ou plus
  1.1605 +      simplement le <emphasis>tip</emphasis>.</para>
  1.1606 +
  1.1607 +    <para id="x_684">Au passage, la commande <command role="hg-cmd">hg
  1.1608 +        tip</command> accepte la plupart des mêmes options que 
  1.1609 +        <command role="hg-cmd">hg log</command>, ainsi <option
  1.1610 +        role="hg-opt-global">-v</option> ci dessus inplique <quote>soit
  1.1611 +        verbeux</quote>, <option role="hg-opt-tip">-p</option>
  1.1612 +        veux dire <quote>affiche le patch</quote>. L'utilisation de l'option
  1.1613 +        <option role="hg-opt-tip">-p</option> pour afficher un patch est un
  1.1614 +        autre exemple de la cohérence des commandes évoquée plus tôt.</para>
  1.1615 +
  1.1616 +    </sect2>
  1.1617 +  </sect1>
  1.1618 +  <sect1>
  1.1619 +    <title>Partager ses modifications</title>
  1.1620 +
  1.1621 +    <para id="x_58">Nous avons mentionné plus haut que les dépôts 
  1.1622 +    de Mercurial sont autosuffisants. Ce qui signifie que la nouvelle
  1.1623 +    révision que vous venez de créer n'existe seulement dans votre 
  1.1624 +    répertoire <filename class="directory">my-hello</filename>. Étudions 
  1.1625 +    comment propager cette modification dans d'autres dépôts.</para>
  1.1626 +
  1.1627 +    <sect2 id="sec:tour:pull">
  1.1628 +      <title>Récupérer les modifications d'autres dépôts</title>
  1.1629 +
  1.1630 +      <para id="x_5a">Pour commencer, construisons un clone de notre dépôt 
  1.1631 +      <filename class="directory">hello</filename> qui ne contiendra pas 
  1.1632 +      le changement que nous venons d'effectuer. Nous l'appellerons notre 
  1.1633 +      dépôt temporaire <filename class="directory">hello-pull</filename>.</para>
  1.1634 +
  1.1635 +     &interaction.tour.clone-pull;
  1.1636 +
  1.1637 +     <para id="x_5a">Nous allons utiliser la commande <command
  1.1638 +       role="hg-cmd">hg pull</command> pour envoyer les modifications depuis
  1.1639 +       <filename class="directory">my-hello</filename> dans <filename 
  1.1640 +       class="directory">hello-pull</filename>. Néanmoins, récupérer
  1.1641 +       aveuglement des modifications depuis un dépôt a quelque chose d'un peu 
  1.1642 +       effrayant. Mercurial propose donc une commande <command
  1.1643 +       role="hg-cmd">hg incoming</command> qui permet de savoir quelles modifications
  1.1644 +       la commande <command role="hg-cmd">hg pull</command> <emphasis>pourrait</emphasis> 
  1.1645 +       entraîner dans notre dépôt, et ceci sans effectuer réellement de modification 
  1.1646 +       dessus.</para>
  1.1647 +
  1.1648 +      &interaction.tour.incoming; 
  1.1649 +
  1.1650 +    <para id="x_5c">Apporter les modifications rapatriées dans 
  1.1651 +      un dépôt se résume donc à exécuter la commande <command 
  1.1652 +      role="hg-cmd">hg pull</command>, et préciser depuis quel dépôt
  1.1653 +      effectuer le <command role="hg-cmd">hg pull</command>.</para>
  1.1654 +
  1.1655 +     &interaction.tour.pull;
  1.1656 +
  1.1657 +    <para id="x_5d">Comme vous le voyez avec une sortie avant et après de la
  1.1658 +    commande <command role="hg-cmd">hg tip</command>, nous avons réussi à
  1.1659 +    récupérer aisément les modifications dans notre dépôt. Il reste néanmoins
  1.1660 +    quelque chose à faire avant de placer ces modifications dans l'espace de
  1.1661 +    travail.</para>
  1.1662 +   
  1.1663 +   <tip>
  1.1664 +     <title>Récupérer des changements précis</title>
  1.1665 +
  1.1666 +     <para id="x_5b">Il est possible à cause du délai entre l'exécution de la
  1.1667 +       commande <command role="hg-cmd">hg incoming</command> et l'exécution de
  1.1668 +       la commande <command role="hg-cmd">hg pull</command>, que vous ne
  1.1669 +       puissiez pas voir toutes les modifications que vous rapporterez d'un
  1.1670 +       autre dépôt. Suppossons que vous récupériez les modifications d'un dépôt
  1.1671 +       situé quelque part sur le réeau. Alors que vous regardez le résultat de
  1.1672 +       la commande <command role="hg-cmd">hg incoming</command>, et avant que
  1.1673 +       vous ne décidiez de récupérer ces modifications, quelqu'un peut ajouter
  1.1674 +       de nouvelles révisions dans le dépôt distant. Ce qui signigie que vous
  1.1675 +       récupérer plus de révision que ce que vous aviez regarder en utilisant
  1.1676 +       la commande <command role="hg-cmd">hg incoming</command>.</para>
  1.1677 +     <para id="x_718">Si vous voulez seulement récupérer ce que vous aviez
  1.1678 +       vérifier à l'aide de la commande <command role="hg-cmd">hg
  1.1679 +       incoming</command>, ou que pour d'autres raisons vous souhaitiez ne
  1.1680 +       récupérer qu'un sous ensemble des révisions supplémentaires
  1.1681 +       disponibles, indiquant simplement les modifications que vous souhaitez
  1.1682 +       récupérer par leurs ID de révision, soit <command>hg pull
  1.1683 +       -r7e95bb</command>. </para>
  1.1684 +    </tip>
  1.1685 +  </sect2>
  1.1686 +  <sect2>
  1.1687 +    <title>Mise à jour de l'espace de travail</title>
  1.1688 +
  1.1689 +    <para id="x_5e">Nous a:vons jusqu'à maintenant grossièrement définie la
  1.1690 +      relation entre un dépôt et un espace de travail. La commande <command
  1.1691 +      role="hg-cmd">hg pull</command> que nous avons exécutée dans la section 
  1.1692 +      <xref linkend="sec:tour:pull"/> a apporté des modifications, que nous
  1.1693 +      avons vérifiées, dans notre dépôt, mais il n'y a aucune trace de ces
  1.1694 +      modifications dans notre espace de travail. En effet, <command
  1.1695 +      role="hg-cmd">hg pull</command> ne touche pas (par défaut) à l'espace
  1.1696 +      de travail. C'est la commande <command role="hg-cmd">hg update</command>
  1.1697 +      qui s'en charge.</para>
  1.1698 +
  1.1699 +     &interaction.tour.update;
  1.1700 +
  1.1701 +    <para id="x_5f">Il peut sembler un peu étrange que la commande <command
  1.1702 +      role="hg-cmd">hg pull</command> ne mette pas à jour l'espace de travail
  1.1703 +      automatiquement. Il y a en fait une très bonne raison à cela : vous
  1.1704 +      pouvez utilisez la commande <command role="hg-cmd">hg update</command>
  1.1705 +      pour mettre à jour votre espace de travail à l'état dans lequel il était 
  1.1706 +      à <emphasis>n'importe quelle révision</emphasis> de l'historique du dépôt. 
  1.1707 +      Si vous aviez un espace de travail contenant une ancienne
  1.1708 +      révision&emdash;pour chercher l'origine d'un bug, par exemple&emdash;et
  1.1709 +      que vous effectuiez un <command role="hg-cmd">hg pull</command> qui
  1.1710 +      mettrait à jour automatiquement votre espace de travail, vous ne seriez
  1.1711 +      probablement pas très satisfait.
  1.1712 +    </para>
  1.1713 +
  1.1714 +    <para id="x_60">Néanmoins, comme les opérations de pull sont très souvent
  1.1715 +      suivies d'un update, Mercurial vous permet de combiner les
  1.1716 +      deux aisément en passant l'option <option role="hg-opt-pull">-u</option> 
  1.1717 +      à la commande <command role="hg-cmd">hg pull</command>.</para>
  1.1718 +
  1.1719 +    <para id="x_61">Si vous étudiez de nouveau la sortie de la commande <command
  1.1720 +      role="hg-cmd">hg pull</command> dans la section <xref
  1.1721 +      linkend="sec:tour:pull"/> quand nous l'avons exécutée sans l'option
  1.1722 +      <option role="hg-opt-pull">-u</option>, vous pouvez constater qu'elle a
  1.1723 +      affiché un rappel assez utile : vous devez encore effectuer une
  1.1724 +      opération pour mettre à jour votre espace de travail.</para>
  1.1725 +
  1.1726 +    <para id="x_62">Pour découvrir sur quelle révision de l'espace de 
  1.1727 +      travail on se trouve, utilisez la commande <command role="hg-cmd">hg
  1.1728 +      parents</command>.</para>
  1.1729 +
  1.1730 +     &interaction.tour.parents;
  1.1731 +
  1.1732 +   <para id="x_63">Si vous regardez de nouveau le dessin <xref
  1.1733 +     linkend="fig:tour-basic:history"/>, vous verrez les flèches reliant
  1.1734 +     entre eux les révisions. Le nœud d'où la flèche
  1.1735 +     <emphasis>part</emphasis> est dans chaque cas un parent,
  1.1736 +     et le nœud où la flèche <emphasis>arrive</emphasis> est un enfant.</para>
  1.1737 +
  1.1738 +   <para id="x_64">Pour mettre à jour l'espace de travail d'une révision particulière,
  1.1739 +     indiquez un numéro de révision ou un \textit{changeset ID} à la commande
  1.1740 +     <command role="hg-cmd">hg update</command>.</para>
  1.1741 +
  1.1742 +    &interaction.tour.older;
  1.1743 +
  1.1744 +   <para id="x_65">Si vous ne précisez pas de manière explicite de numéro 
  1.1745 +     de révision la commande <command role="hg-cmd">hg update</command>
  1.1746 +     mettra à jour votre espace de travail avec
  1.1747 +     le contenu de la révsion \textit{tip}, comme montré dans l'exemple ci
  1.1748 +     dessus lors du second appel à <command role="hg-cmd">hg update</command>.</para>
  1.1749 +  </sect2>
  1.1750 +
  1.1751 +  <sect2>
  1.1752 +    <title>Transférer les modifications à un autre dépôt</title>
  1.1753 +
  1.1754 +    <para id="x_66">Mercurial vous laisse transférer les modifications 
  1.1755 +      à un autre dépôt, depuis votre dépôt actuel. Comme dans l'exemple 
  1.1756 +      du <command role="hg-cmd">hg pull</command> ci-dessus, nous allons 
  1.1757 +      créer un dépôt temporaire vers lequel transférer nos modifications.
  1.1758 +
  1.1759 +     &interaction.tour.clone-push;
  1.1760 +
  1.1761 +    <para id="x_67">La commande <command role="hg-cmd">hg outgoing</command>
  1.1762 +      nous indique quels changements nous allons transférer vers l'autre
  1.1763 +      serveur ?</para>
  1.1764 +
  1.1765 +     &interaction.tour.outgoing;
  1.1766 +
  1.1767 +    <para id="x_68">Et la commande <command role="hg-cmd">hg push</command> 
  1.1768 +      effectue réellement le transfert.</para>
  1.1769 +
  1.1770 +     &interaction.tour.push;
  1.1771 +
  1.1772 +    <para id="x_69">Comme avec <command role="hg-cmd">hg pull</command>, la
  1.1773 +      commande <command role="hg-cmd">hg push</command> ne met pas à jour
  1.1774 +      le répertoire de travail du dépôt dans lequel il transfère les
  1.1775 +      modifications. À l'inverse de <command role="hg-cmd">hg pull</command>, 
  1.1776 +      <command role="hg-cmd">hg push</command> ne fournit pas d'option 
  1.1777 +      <literal>-u</literal> pour forcer la mise à jour de l'espace de
  1.1778 +      travail cible. Cette asymétrie est délibéré : le dépot vers lequel nous
  1.1779 +      transférons peut très bien être un serveur distant et partagé par
  1.1780 +      plusieurs personnes. Si nous devions mettre à jour son répertoire de
  1.1781 +      travail alors que quelqu'un d'autre travail dessus, nous risquerions 
  1.1782 +      de perturber son travail.</para>
  1.1783 +
  1.1784 +    <para id="x_6a">Qu'est ce qui se passe lorsque vous essayez de récupérer
  1.1785 +      ou de transférer vos modifications et que le dépôt cible a déjà reçu
  1.1786 +      ces modifications ? Rien de bien excitant.</para>
  1.1787 +
  1.1788 +     &interaction.tour.push.nothing;
  1.1789 +
  1.1790 +  </sect2>
  1.1791 +
  1.1792 +  <sect2>
  1.1793 +    <title>Emplacements par défaut</title>
  1.1794 +          
  1.1795 +    <para id="x_719">Quand nous faisons un clone d'un dépôt, Mercurial
  1.1796 +      enregistre l'emplacement du dépôt d'origine dans le fichier
  1.1797 +      <filename>.hg/hgrc</filename> de notre nouveau dépôt. Si nous ne
  1.1798 +      fournissons pas d'emplacement à la commande <command>hg pull</command>
  1.1799 +      ou à la commande <command>hg push</command>, ces commandes utiliseront
  1.1800 +      alors ces emplacements comme valeur par défaut. Les commandes
  1.1801 +      <command>hg incoming</command> et <command>hg outgoing</command> feront
  1.1802 +      de même.</para>
  1.1803 +
  1.1804 +    <para id="x_71a">Si vous regardez le fichier
  1.1805 +      <filename>.hg/hgrc</filename>, vous constaterez que son contenu ressemble
  1.1806 +      à ce qui suit.</para>
  1.1807 +
  1.1808 +    <programlisting>[paths]
  1.1809 +default = http://www.selenic.com/repo/hg</programlisting>
  1.1810 +      
  1.1811 +    <para id="x_71b">Il est possible&emdash;et souvent
  1.1812 +      pratique&emdash;d'avoir un emplacement par défaut pour la commande
  1.1813 +      <command>hg push</command> et la commande <command>hg outgoing</command>
  1.1814 +      différent de celui des commandes <command>hg pull</command> et des
  1.1815 +      <command>hg incoming</command>. C'est faisable en ajoutant une entrée
  1.1816 +      <literal>default-push</literal> à la section <literal>[paths]</literal>
  1.1817 +      du <filename>.hg/hgrc</filename>, comme suit.</para>
  1.1818 +    
  1.1819 +    <programlisting>[paths]
  1.1820 +default = http://www.selenic.com/repo/hg
  1.1821 +default-push = http://hg.example.com/hg</programlisting>
  1.1822 +  </sect2>
  1.1823 +
  1.1824 +  <sect2>
  1.1825 +    <title>Partager ses modifications à travers le réseau</title>
  1.1826 +
  1.1827 +    <para id="x_6b">Les commandes que nous avons étudiées dans les sections
  1.1828 +      précédentes ne sont pas limitées aux dépôt locaux. Chacune fonctionne 
  1.1829 +      de la même manière à travers une connexion réseau, il suffit de lui 
  1.1830 +      passer une URL à la place d'un chemin de fichier local.</para>
  1.1831 +
  1.1832 +     &interaction.tour.outgoing.net;
  1.1833 +
  1.1834 +    <para id="x_6c">Dans cet exemple, nous allons voir quels changements 
  1.1835 +      nous pourrions transférer vers le dépôt distant, mais le dépôt est, 
  1.1836 +      de manière tout à fait compréhensible, pas configuré pour accepter 
  1.1837 +      des modifications d'utilisateurs anonymes.</para>
  1.1838 +
  1.1839 +     &interaction.tour.push.net; 
  1.1840 +    </sect2>
  1.1841 +  </sect1>
  1.1842 +
  1.1843 +  <sect1>
  1.1844 +    <title>Commencer un nouveau projet</title>w
  1.1845 +    
  1.1846 +      <para id="x_71c">Il est tout aussi aisé de commencer un nouveau projet
  1.1847 +        que de travailler sur un qui existe déjà. La commande
  1.1848 +        <command>hg init</command> créer un nouveau dépôt Mercurial,
  1.1849 +        vide.</para>
  1.1850 +      
  1.1851 +       &interaction.ch01-new.init;
  1.1852 +                        
  1.1853 +      <para id="x_71d">Ceci créer simplement un répertoire nommée
  1.1854 +        <filename>myproject</filename> dans le répertoire courant.</para>
  1.1855 +
  1.1856 +       &interaction.ch01-new.ls;
  1.1857 +
  1.1858 +      <para id="x_71e">Nous pouvons dire que <filename>myproject</filename>
  1.1859 +        est un dépôt Mercurial car il contient un répertoire
  1.1860 +        <filename>.hg</filename>.</para>
  1.1861 +
  1.1862 +       &interaction.ch01-new.ls2;
  1.1863 +      
  1.1864 +      <para id="x_71f">Si vous voulons ajouter quelques fichiers préexistants
  1.1865 +        dans ce dépôt, il suffit de les recopier dans le répertoire de travail,
  1.1866 +        et demander à Mercurial de commencer les suivre en utilisant la
  1.1867 +        commande <command>hg add</command>.</para>
  1.1868 +
  1.1869 +      &interaction.ch01-new.add;
  1.1870 +
  1.1871 +      <para id="x_720">Une fois que nous sommes satisfait de notre projet,
  1.1872 +        nous pouvons commencer à ajouter nos révisions.</para>
  1.1873 +
  1.1874 +       &interaction.ch01-new.commit;
  1.1875 +
  1.1876 +      <para id="x_721">Il ne prend que quelques instants pour commencer à
  1.1877 +      utiliser Mercurial sur un nouveau projet, ce qui fait aussi de ses
  1.1878 +      points forts. Travailler avec une gestion de révision devient très
  1.1879 +      facile, nous pouvons même l'utiliser pour les plus petits projets où
  1.1880 +      nous aurions probablement jamais penser utiliser un outils aussi
  1.1881 +      complexe.</para>
  1.1882 +   </sect1>
  1.1883  </chapter>
  1.1884  
  1.1885  <!--
  1.1886  local variables: 
  1.1887  sgml-parent-document: ("00book.xml" "book" "chapter")
  1.1888  end:
  1.1889 --->
  1.1890 \ No newline at end of file
  1.1891 +-->