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