hgbook
diff fr/ch02-tour-basic.xml @ 973:1df99de46e39
Finishing works to adapt already existing translations to new xdoc fmt - also add a couple new translations to follow recent modification from Bryan.
author | Romain PELISSE <belaran@gmail.com> |
---|---|
date | Tue Sep 01 17:00:12 2009 +0200 (2009-09-01) |
parents | 6b680d569bb4 |
children | 5e1e70fcdfdb |
line diff
1.1 --- a/fr/ch02-tour-basic.xml Sun Aug 16 04:58:01 2009 +0200 1.2 +++ b/fr/ch02-tour-basic.xml Tue Sep 01 17:00:12 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 <email.address@domain.net> 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 -<<<<<<< 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 <censored.person@example.org> 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 -<<<<<<< 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 <email.address@domain.net></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 <bos@serpentine.com> 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 <censored.person@example.org> 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 +-->