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