rev |
line source |
belaran@970
|
1
|
bos@559
|
2
|
bos@686
|
3 <appendix id="svn">
|
bos@687
|
4 <?dbhtml filename="migrating-to-mercurial.html"?>
|
belaran@970
|
5 <title>Migrer vers Mercurial</title>
|
belaran@970
|
6
|
belaran@970
|
7 <para id="x_6e1">Une manière courante de s'essayer à un nouveau
|
belaran@970
|
8 gestionnaire de révisions est d'expérimenter consiste à migrer un
|
belaran@970
|
9 projet existant, plutôt que le faire avec un nouveau projet.
|
belaran@970
|
10 </para>
|
belaran@970
|
11
|
belaran@970
|
12 <para id="x_6e2">Dans cette annexe, nous discuterons comment importer
|
belaran@970
|
13 l'historique d'un projet dans Mercurial, et à quoi faire attention
|
belaran@970
|
14 si vous êtes habitué à un autre outils de gestion de révisions.
|
belaran@970
|
15 </para>
|
bos@686
|
16
|
bos@686
|
17 <sect1>
|
belaran@970
|
18 <title>Importer l'historique depuis un autre système</title>
|
belaran@970
|
19
|
belaran@970
|
20 <para id="x_6e3">Mercurial est livré avec une extension nommée
|
belaran@970
|
21 <literal>convert</literal>, qui permet d'importer son historique
|
belaran@970
|
22 depuis les gestionnaire de révisions les plus courants. Lors de
|
belaran@970
|
23 l'écriture de ce livre, il pouvait importer l'historique depuis:
|
belaran@970
|
24 </para>
|
bos@686
|
25 <itemizedlist>
|
bos@686
|
26 <listitem>
|
bos@691
|
27 <para id="x_6e4">Subversion</para>
|
bos@691
|
28 </listitem>
|
bos@691
|
29 <listitem>
|
bos@691
|
30 <para id="x_6e5">CVS</para>
|
bos@691
|
31 </listitem>
|
bos@691
|
32 <listitem>
|
bos@691
|
33 <para id="x_6e6">git</para>
|
bos@691
|
34 </listitem>
|
bos@691
|
35 <listitem>
|
bos@691
|
36 <para id="x_6e7">Darcs</para>
|
bos@691
|
37 </listitem>
|
bos@691
|
38 <listitem>
|
bos@691
|
39 <para id="x_6e8">Bazaar</para>
|
bos@691
|
40 </listitem>
|
bos@691
|
41 <listitem>
|
bos@691
|
42 <para id="x_6e9">Monotone</para>
|
bos@691
|
43 </listitem>
|
bos@691
|
44 <listitem>
|
bos@691
|
45 <para id="x_6ea">GNU Arch</para>
|
bos@691
|
46 </listitem>
|
bos@691
|
47 <listitem>
|
bos@691
|
48 <para id="x_6eb">Mercurial</para>
|
bos@686
|
49 </listitem>
|
bos@686
|
50 </itemizedlist>
|
bos@686
|
51
|
belaran@970
|
52 <para id="x_6ec">(Pour savoir pourquoi Mercurial lui même est supporté
|
belaran@970
|
53 comme source, voir, see <xref linkend="svn.filemap"/>.)</para>
|
belaran@970
|
54
|
belaran@970
|
55 <para id="x_6ed">Vous pouvez activer l'extension de la manière
|
belaran@970
|
56 habituelle, en éditant votre fichier <filename>~/.hgrc</filename> file.</para>
|
bos@686
|
57
|
bos@686
|
58 <programlisting>[extensions]
|
bos@686
|
59 convert =</programlisting>
|
bos@686
|
60
|
belaran@970
|
61 <para id="x_6ee">Ceci rendra la commande <command>hg convert</command>
|
belaran@970
|
62 disponible. La commande est facile à utiliser. Par exemple, la
|
belaran@970
|
63 commande suivante va importer l'historique Subversion du <emphasis
|
belaran@970
|
64 remap="it">framework</emphasis> de test Nose Unit dans Mercurial.
|
belaran@970
|
65 </para>
|
bos@686
|
66
|
bos@686
|
67 <screen><prompt>$</prompt> <userinput>hg convert http://python-nose.googlecode.com/svn/trunk</userinput></screen>
|
bos@686
|
68
|
belaran@970
|
69 <para id="x_6ef">L'extension <literal>convert</literal> opère de
|
belaran@970
|
70 manière incrémentale. En d'autres mots, après que vous ayez exécuter
|
belaran@970
|
71 la commande <command>hg convert</command> une première fois, l'exécuter
|
belaran@970
|
72 de nouveau importera les nouvelles révisions, ajoutées depuis votre
|
belaran@970
|
73 précédente exécution. La conversion incrémentale ne réussiera que si
|
belaran@970
|
74 vous exécutez <command>hg convert</command> dans le même dépôt que vous
|
belaran@970
|
75 aviez utilisé à l'origine car l'extension <literal>convert</literal>
|
belaran@970
|
76 sauvegarde un certains nombres de méta-données privées dans le fichier,
|
belaran@970
|
77 non versioné, <filename>.hg/shamap</filename>, au sein du dépôt cible.
|
belaran@970
|
78 </para>
|
belaran@970
|
79
|
belaran@970
|
80 <para id="x_707">Quand vous voulez faire des modifications en utilisant
|
belaran@970
|
81 Mercurial, le mieux est de faire un clone de l'ensemble de l'arborescence
|
belaran@970
|
82 que vous souhaitez convertir, et laisser l'arborescence d'origine pour
|
belaran@970
|
83 des conversions futures. C'est la manière la plus sûr pour vous laisser
|
belaran@970
|
84 récupérer et fusionner les modifications futures depuis la gestionnaire de
|
belaran@970
|
85 révisions source dans votre dépôt Mercurial.</para>
|
bos@693
|
86
|
bos@693
|
87 <sect2>
|
belaran@970
|
88 <title>Convertir plusieurs branches</title>
|
belaran@970
|
89
|
belaran@970
|
90 <para id="x_708">La commande <command>hg convert</command> cité
|
belaran@970
|
91 ci dessus converti seulement l'historique de la <literal>branche
|
belaran@970
|
92 principal (trunk)</literal> du dépôt Subversion. Si vous utilisons
|
belaran@970
|
93 à la place l'URL <literal>http://python-nose.googlecode.com/svn</literal>,
|
belaran@970
|
94 Mercurial va automatiquement détecter les répertoires
|
belaran@970
|
95 <literal>branche principale (trunk)</literal>, les <literal>étiquettes
|
belaran@970
|
96 (tags)</literal>, et les <literal>branches</literal> que les dépôt
|
belaran@970
|
97 Subversion utilisent généralement, et il va les importer chacun dans
|
belaran@970
|
98 une branche Mercurial distincte.</para>
|
belaran@970
|
99
|
belaran@970
|
100 <para id="x_709">Par défaut, chaque branche Subversion importée
|
belaran@970
|
101 dans Mercurial se voit attribué un nom de branche. Une fois la
|
belaran@970
|
102 conversion achevée, vous pouvez lister les noms des branches
|
belaran@970
|
103 actives dans le dépôt Mercurial en utilisant la commande
|
belaran@970
|
104 <command>hg branches -a</command>. Si vous préférez importer les
|
belaran@970
|
105 branches Subversion sans noms, ajoutez l'option <option>--config
|
belaran@970
|
106 convert.hg.usebranches=false</option> à la commande
|
belaran@970
|
107 <command>hg convert</command>.</para>
|
belaran@970
|
108
|
belaran@970
|
109 <para id="x_70a">Une fois que vous avez converti votre arborescence,
|
belaran@970
|
110 si vous voulez suivre la pratique habituel avec Mercurial dans une
|
belaran@970
|
111 arborescence qui ne contient qu'une seule branche, vous pouvez cloner
|
belaran@970
|
112 une seule branche en utilisant
|
belaran@970
|
113 <command>hg clone -r nomdemabranche</command>.</para>
|
bos@693
|
114 </sect2>
|
bos@693
|
115
|
bos@686
|
116 <sect2>
|
belaran@970
|
117 <title>Associer les noms d'utilisateurs</title>
|
belaran@970
|
118
|
belaran@970
|
119 <para id="x_6f0">Certains système de gestion de révisions
|
belaran@970
|
120 ne sauvegarde, avec les modifications transférées, que les noms
|
belaran@970
|
121 d'utilisateurs raccourcis et ceci peuvent être difficile à
|
belaran@970
|
122 intépréter. La norme avec Mercurial est de sauvegarder le
|
belaran@970
|
123 nom du <emphasis remap="it">committer</emphasis> et son adresse
|
belaran@970
|
124 mail, ce qui est beaucoup plus utile pour discuter avec lui
|
belaran@970
|
125 par la suite.</para>
|
belaran@970
|
126
|
belaran@970
|
127 <para id="x_6f1">Si vous convertissez une arborescence depuis
|
belaran@970
|
128 un gestionnaire de révisions qui utilisent seulement les noms
|
belaran@970
|
129 raccourcies, vous pouvez associer ces noms à des équivalents
|
belaran@970
|
130 plus détaillés en passant l'option <option>--authors</option>
|
belaran@970
|
131 à la commande <command>hg convert</command>. Cette option
|
belaran@970
|
132 attend un fichier qui contient des entrées de la forme suivante:
|
belaran@970
|
133 </para>
|
bos@686
|
134
|
bos@686
|
135 <programlisting>arist = Aristotle <aristotle@phil.example.gr>
|
bos@686
|
136 soc = Socrates <socrates@phil.example.gr></programlisting>
|
bos@686
|
137
|
belaran@970
|
138 <para id="x_6f2">Quand <literal>convert</literal> trouve une
|
belaran@970
|
139 modification associé au nom <literal>arist</literal> dans le
|
belaran@970
|
140 dépôt de source, il va utiliser le nom <literal>Aristotle
|
belaran@970
|
141 <aristotle@phil.example.gr></literal> dans les révisions
|
belaran@970
|
142 Mercurial. Si aucune correspondance n'est trouvé, il utilise
|
belaran@970
|
143 le nom tel quel.</para>
|
bos@686
|
144 </sect2>
|
bos@686
|
145
|
bos@686
|
146 <sect2 id="svn.filemap">
|
belaran@970
|
147 <title>Nettoyer l'arboresence</title>
|
belaran@970
|
148
|
belaran@970
|
149 <para id="x_6f3">Tout les projets n'ont pas un historique parfait.
|
belaran@970
|
150 Il peut y avoir des répertoire qui n'auraient jamais dû être ajoutés,
|
belaran@970
|
151 un fichier qui est trop volumineux, ou même une sous partie de la
|
belaran@970
|
152 hiérarchie qui devraient être réorganisée.</para>
|
belaran@970
|
153
|
belaran@970
|
154 <para id="x_6f4">L'extension <literal>convert</literal> permet
|
belaran@970
|
155 d'utiliser un <quote>fichier d'association</quote> qui peut
|
belaran@970
|
156 réorganiser les fichiers et les répertoires dans un projet alors
|
belaran@970
|
157 qu'il importe son historique. Ceci est utile non seulement quand vous
|
belaran@970
|
158 importez l'historique d'un autre gestionnaire de révisions, mais
|
belaran@970
|
159 aussi pour nettoyer ou refactorer l'arboresence d'un projet
|
belaran@970
|
160 Mercurial.</para>
|
belaran@970
|
161
|
belaran@970
|
162 <para id="x_6f5">Pour indiquer le fichier d'association, on utilise
|
belaran@970
|
163 l'option <option>-filemap</option> en lui fournissant un nom de
|
belaran@970
|
164 fichier. Le fichier d'association contient des lignes de la forme
|
belaran@970
|
165 suivante:
|
belaran@970
|
166
|
belaran@970
|
167 <programlisting># Ceci est un commentaire.
|
belaran@970
|
168 # Les lignes vides sont ignorées.
|
bos@686
|
169
|
bos@686
|
170 include path/to/file
|
bos@686
|
171
|
bos@686
|
172 exclude path/to/file
|
bos@686
|
173
|
bos@686
|
174 rename from/some/path to/some/other/place
|
bos@686
|
175 </programlisting>
|
bos@686
|
176
|
belaran@970
|
177 <para id="x_6f6">La directive <literal>include</literal> inclus un
|
belaran@970
|
178 fichier, ou l'ensemble des fichiers d'un répertoire, dans le dépôt
|
belaran@970
|
179 de destination. La directive <literal>exclude</literal> omet les
|
belaran@970
|
180 fichiers ou répertoires du dépôt. Ceci inclut aussi les autres
|
belaran@970
|
181 fichiers et répertoires qui ne sont pas explicitement inclus.
|
belaran@970
|
182 La directive <literal>exclude</literal> entraine l'omission
|
belaran@970
|
183 des fichiers ou répertoires, et autres fichiers qui ne sont
|
belaran@970
|
184 explicitement inclus.</para>
|
belaran@970
|
185
|
belaran@970
|
186 <para id="x_6f7">Pour déplacer un fichier ou un répertoire d'un
|
belaran@970
|
187 emplacement à un autre, il faut utiliser la directive
|
belaran@970
|
188 <literal>rename</literal>. Si vous avez besoin de déplacer un
|
belaran@970
|
189 fichier ou un répertoire depuis un sous répertoire dans la raçine
|
belaran@970
|
190 du dépôt, utilisez <literal>.</literal> comme second argument de
|
belaran@970
|
191 la directive <literal>rename</literal>.</para>
|
bos@686
|
192 </sect2>
|
bos@693
|
193
|
bos@693
|
194 <sect2>
|
belaran@970
|
195 <title>Améliorer les performances la conversion Subversion</title>
|
belaran@970
|
196
|
belaran@970
|
197 <para id="x_70b">Vous aurez souvent besoin de plusieurs essais
|
belaran@970
|
198 avant d'arriver à la parfaite combinaison de fichier d'association,
|
belaran@970
|
199 d'association de noms d'utilisateurs et d'autres paramètres. Hors,
|
belaran@970
|
200 convertir un dépôt Mercurial via un protocol comme <literal>ssh</literal>
|
belaran@970
|
201 or <literal>http</literal> peut être des milliers de fois plus long
|
belaran@970
|
202 que ce dont le système d'exploitation est en fait capable de faire,
|
belaran@970
|
203 à cause des latence réseau. Ceci peut rendre la conception de cette
|
belaran@970
|
204 combinaison parfaite très douloureuse.</para>
|
belaran@970
|
205
|
belaran@970
|
206 <para id="x_70c">La commande <ulink
|
bos@693
|
207 url="http://svn.collab.net/repos/svn/trunk/notes/svnsync.txt"><command>svnsync</command></ulink>
|
belaran@970
|
208 peut grandement améliorer la vitesse de conversion d'un dépôt
|
belaran@970
|
209 Subversion. Il s'agit d'un programme de miroir de dépôt Subversion
|
belaran@970
|
210 en lecture seule. L'idée est de créer un miroir local d'une
|
belaran@970
|
211 arboresence Subversion, puis de convertir ce miroir en dépôt
|
belaran@970
|
212 Mercurial.</para>
|
belaran@970
|
213
|
belaran@970
|
214 <para id="x_70d">Supposez que nous voulions convertir le dépôt
|
belaran@970
|
215 Subversion du populaire projet Memcached en une arboresence Mercurial.
|
belaran@970
|
216 Premièrement, nous créons un dépôt Subversion local.</para>
|
bos@693
|
217
|
bos@693
|
218 <screen><prompt>$</prompt> <userinput>svnadmin create memcached-mirror</userinput></screen>
|
bos@693
|
219
|
belaran@970
|
220 <para id="x_70e">Puis, nous allons mettre en place le 'hook' Subversion
|
belaran@970
|
221 dont <command>svnsync</command> a besoin.</para>
|
bos@693
|
222
|
bos@693
|
223 <screen><prompt>$</prompt> <userinput>echo '#!/bin/sh' > memcached-mirror/hooks/pre-revprop-change</userinput>
|
bos@693
|
224 <prompt>$</prompt> <userinput>chmod +x memcached-mirror/hooks/pre-revprop-change</userinput></screen>
|
bos@693
|
225
|
belaran@970
|
226 <para id="x_70f">Nous initialisons <command>svnsync</command> dans ce
|
belaran@970
|
227 dépôt.</para>
|
bos@693
|
228
|
bos@693
|
229 <screen><prompt>$</prompt> <userinput>svnsync --init file://`pwd`/memcached-mirror \
|
bos@693
|
230 http://code.sixapart.com/svn/memcached</userinput></screen>
|
bos@693
|
231
|
belaran@970
|
232 <para id="x_710">La prochaine étape est de commencer le processus de
|
belaran@970
|
233 miroir de <command>svnsync</command>.</para>
|
bos@693
|
234
|
bos@693
|
235 <screen><prompt>$</prompt> <userinput>svnsync sync file://`pwd`/memcached-mirror</userinput></screen>
|
bos@693
|
236
|
belaran@970
|
237 <para id="x_711">Enfin, nous importons l'historique de notre dépôt
|
belaran@970
|
238 local Subversion dans Mercurial.</para>
|
bos@693
|
239
|
bos@693
|
240 <screen><prompt>$</prompt> <userinput>hg convert memcached-mirror</userinput></screen>
|
bos@693
|
241
|
belaran@970
|
242 <para id="x_712">Nous pouvons utiliser ce processus de manière
|
belaran@970
|
243 incrémentale, si le dépôt Subversion est toujours en activité.
|
belaran@970
|
244 Il suffit d'exécuter de nouveau <command>svnsync</command> pour
|
belaran@970
|
245 récupérer les modifications dans notre miroir, puis <command>hg convert</command>
|
belaran@970
|
246 les importe dans notre arboresence Mercurial.</para>
|
belaran@970
|
247
|
belaran@970
|
248 <para id="x_713">Il y a deux avantages à utiliser un import à deux
|
belaran@970
|
249 étages comme avec <command>svnsync</command></command>. Le premier
|
belaran@970
|
250 est qu'il utilise plus efficassement la synchronisation à travers
|
belaran@970
|
251 le réseau de Subversion que la commande <command>hg convert</command>,
|
belaran@970
|
252 et donc il transfère moins de données à travers ce dernier. La deuxième
|
belaran@970
|
253 est que l'import depuis un dépôt subversion local est si rapide que
|
belaran@970
|
254 vous pouvez améliorer votre conversion de ce dernier, en le répétant
|
belaran@970
|
255 succesivement, sans souffrir de la qualité de la connection
|
belaran@970
|
256 réseau.</para>
|
bos@693
|
257 </sect2>
|
bos@686
|
258 </sect1>
|
bos@686
|
259
|
bos@686
|
260 <sect1>
|
bos@686
|
261 <title>Migrating from Subversion</title>
|
bos@686
|
262
|
belaran@970
|
263 <para id="x_6f8">Subversion est aujourd'hui le plus utilisé des
|
belaran@970
|
264 système de gestion de révision Open Source. Bien qu'il y est des
|
belaran@970
|
265 différences entre Mercurial et Subversion, faire la transition de
|
belaran@970
|
266 l'un à l'autre n'est pas très difficile. Les deux disposent en effet
|
belaran@970
|
267 de jeux de commandes similaires et d'interfaces uniformes.</para>
|
bos@686
|
268
|
bos@686
|
269 <sect2>
|
belaran@970
|
270 <title>Différences philosophiques</title>
|
belaran@970
|
271
|
belaran@970
|
272 <para id="x_6f9">La différence fondamentale entre Subversion et
|
belaran@970
|
273 Mercurial est bien évidement que Subversion est centralisé, alors
|
belaran@970
|
274 que Mercurial est distribué. Puisque que Mercurial enregistre tout
|
belaran@970
|
275 l'historique d'un projet sur votre disque dur local, il n'a besoin
|
belaran@970
|
276 d'effectuer des accès au réseau que lorsque vous lui demandez
|
belaran@970
|
277 explicitement de discuter avec un autre dépôt, distant. Par contraste,
|
belaran@970
|
278 Subversion ne conserve que peu d'information localement, et le client
|
belaran@970
|
279 doit donc régulièrement discuter avec le serveur central pour la
|
belaran@970
|
280 plupart des opérations communes.</para>
|
belaran@970
|
281
|
belaran@970
|
282 <para id="x_6fa">Subversion s'en tire plus ou moins bien sans de notion
|
belaran@970
|
283 de branche réellement bien définie : quel part de l'espace de nommage
|
belaran@970
|
284 du serveur est une branche est une simple question de convention, le
|
belaran@970
|
285 logiciel ne fournissant aucune sécurité à ce sujet. Mercurial considère
|
belaran@970
|
286 un dépôt comme une branche.</para>
|
belaran@970
|
287
|
bos@686
|
288 <sect3>
|
belaran@970
|
289 <title>Portée des commandes</title>
|
belaran@970
|
290
|
belaran@970
|
291 <para id="x_6fb">Puisque que Subversion ne sait pas réellement
|
belaran@970
|
292 quelle partie de son espace de nommage est en fait une branche, il
|
belaran@970
|
293 traite la plupart des commandes comme des requêtes à exécuter sur le
|
belaran@970
|
294 répertoire où vous vous situez, et ses sous répertoires. Par exemple,
|
belaran@970
|
295 si vous exécuter <command>svn log</command>, vous verrez l'historique
|
belaran@970
|
296 de la partie de l'arboresence où vous vous situez, et non la
|
belaran@970
|
297 hiérarchie entière.</para>
|
belaran@970
|
298
|
belaran@970
|
299 <para id="x_6fc">Les commandes de Mercurial ont un comportement
|
belaran@970
|
300 différents, appliquant toutes commandes à l'ensemble de l'arboresence
|
belaran@970
|
301 du dépôt. Exécutez la commande <command>hg log</command> et elle vous
|
belaran@970
|
302 donnera l'historique de l'ensemble de l'arboresence, quelque soit le
|
belaran@970
|
303 répertoire de cette dernière où vous vous situez à ce moment là. Si
|
belaran@970
|
304 vous souhaitez l'historique d'une répertoire ou seulement d'un
|
belaran@970
|
305 fichier, ajouter simplement le nom de celui-ci à la commande
|
belaran@970
|
306 <command>hg log src</command>.</para>
|
belaran@970
|
307
|
belaran@970
|
308 <para id="x_6fd">De ma propre expérience, cette différence dans leur
|
belaran@970
|
309 comportement par défaut est probablement ce qui risque de vous
|
belaran@970
|
310 surprendre si vous basculez régulièrement d'un outil à l'autre.</para>
|
bos@686
|
311 </sect3>
|
bos@686
|
312
|
bos@686
|
313 <sect3>
|
belaran@970
|
314 <title>Opération multi utilisateur et sécurité</title>
|
belaran@970
|
315
|
belaran@970
|
316 <para id="x_6fe">Avec Subversion, il est normal (bien que légèrement
|
belaran@970
|
317 désapprouvée) que différentes personnes collaborent sur une seule
|
belaran@970
|
318 branche. Si Alice et Bob travaillent ensemble, et Alice ajoute ses
|
belaran@970
|
319 modications à leur branche partagée, Bob doit alors mettre à jour
|
belaran@970
|
320 la vue de la banche de son client avant d'ajouter lui même ses
|
belaran@970
|
321 modifications. Puisqu'il n'a, à ce moment, aucun enregistrement
|
belaran@970
|
322 permanent des modifications qu'il a fait, il peut corrompre ou perdre
|
belaran@970
|
323 des modifications pendant et après sa mise à jour.</para>
|
belaran@970
|
324
|
belaran@970
|
325 <para id="x_6ff">Mercurial encourage, à l'inverse, un modèle
|
belaran@970
|
326 "commit-puis-merge". Bob ajoute ses modifications de manière locale
|
belaran@970
|
327 avant de récupérer les modifications d'Alice, ou d'envoyer les siennes
|
belaran@970
|
328 au serveur qu'ils partagent. Si Alice envoye ses modifications avant
|
belaran@970
|
329 que Alice n'envoye les siennes, il ne pourra envoyer ses
|
belaran@970
|
330 modifications avant d'avoir récupérer les siennes. Si il fait une
|
belaran@970
|
331 erreur lors de la fusion, il peut toujours à sa version d'origine,
|
belaran@970
|
332 telle qu'elle a été enregistré.</para>
|
belaran@970
|
333
|
belaran@970
|
334 <para id="x_700">Il est important de souligner qu'il s'agit de la
|
belaran@970
|
335 manière habituelle de travailler avec ses outils. Subversion propose
|
belaran@970
|
336 une manière plus sûr de travailler-dans-votre-propre-branche, mais il
|
belaran@970
|
337 est assez complexe pour que, en pratique, il ne soit jamais utiliser.
|
belaran@970
|
338 Mercurial propose un mode, un peu moyen sûr, mais permettant de
|
belaran@970
|
339 récupérer des modifications par dessus des modifications non
|
belaran@970
|
340 commitées, mais c'est considéré comme assez inhabituel.</para>
|
bos@686
|
341 </sect3>
|
bos@686
|
342
|
bos@686
|
343 <sect3>
|
belaran@970
|
344 <title>Publication vs changement locaux</title>
|
belaran@970
|
345
|
belaran@970
|
346 <para id="x_701">Une commande Subversion <command>svn
|
belaran@970
|
347 commit</command> publie immédiatement les modifications sur le
|
belaran@970
|
348 serveur, où ils peuvent être vu par n'importe qui doté du privilège
|
belaran@970
|
349 de lecture.</para>
|
belaran@970
|
350
|
belaran@970
|
351 <para id="x_702">Avec Mercurial, les modifications sont toujours
|
belaran@970
|
352 enregistrées localement, et doivent être par la suite transférer par
|
belaran@970
|
353 la commande <command>hg push</command>.</para>
|
belaran@970
|
354
|
belaran@970
|
355 <para id="x_703">Chaque approche à ses avantages et ses désavantages.
|
belaran@970
|
356 Le modèle Subversion implique que les modifications sont publiées, et
|
belaran@970
|
357 donc disponible immédiatement. D'un autre coté, il implique aussi
|
belaran@970
|
358 qu'un utilisateur doit avoir le droit d'écriture dans le dépôt pour
|
belaran@970
|
359 permettre l'utiliser normalement, et ce privilège n'est pas concédé
|
belaran@970
|
360 facilement par les projets Open Source.</para>
|
belaran@970
|
361
|
belaran@970
|
362 <para id="x_704">L'approche de Mercurial permet à quiquonque de faire
|
belaran@970
|
363 un clone du dépôt et d'y ajouter ses modifications sans jamais avoir
|
belaran@970
|
364 besoin de la permission de quiquonque, et l'on peut même publier ses
|
belaran@970
|
365 modifications et continuer à participer comme on le désir. La
|
belaran@970
|
366 distinction entre les commits et le transfert de ces derniers ouvre
|
belaran@970
|
367 la possibilité néanmoins que quelqu'un oublie pendant une longue
|
belaran@970
|
368 période de transférer ses modifications, ce qui dans certains cas
|
belaran@970
|
369 rares, peut piéger ses collaborateurs.</para>
|
bos@686
|
370 </sect3>
|
bos@686
|
371 </sect2>
|
bos@686
|
372
|
bos@686
|
373 <sect2>
|
belaran@970
|
374 <title>Références des commandes</title>
|
bos@686
|
375
|
bos@686
|
376 <table>
|
belaran@970
|
377 <title>Commandes Subversion et leurs équivalents Mercurial</title>
|
bos@686
|
378 <tgroup cols="3">
|
bos@686
|
379 <thead>
|
bos@686
|
380 <row>
|
bos@686
|
381 <entry>Subversion</entry>
|
bos@686
|
382 <entry>Mercurial</entry>
|
bos@686
|
383 <entry>Notes</entry>
|
bos@686
|
384 </row>
|
bos@686
|
385 </thead>
|
bos@686
|
386 <tbody>
|
bos@686
|
387 <row>
|
bos@686
|
388 <entry><command>svn add</command></entry>
|
bos@686
|
389 <entry><command>hg add</command></entry>
|
bos@686
|
390 <entry></entry>
|
bos@686
|
391 </row>
|
bos@686
|
392 <row>
|
bos@686
|
393 <entry><command>svn blame</command></entry>
|
bos@686
|
394 <entry><command>hg annotate</command></entry>
|
bos@686
|
395 <entry></entry>
|
bos@686
|
396 </row>
|
bos@686
|
397 <row>
|
bos@686
|
398 <entry><command>svn cat</command></entry>
|
bos@686
|
399 <entry><command>hg cat</command></entry>
|
bos@686
|
400 <entry></entry>
|
bos@686
|
401 </row>
|
bos@686
|
402 <row>
|
bos@686
|
403 <entry><command>svn checkout</command></entry>
|
bos@686
|
404 <entry><command>hg clone</command></entry>
|
bos@686
|
405 <entry></entry>
|
bos@686
|
406 </row>
|
bos@686
|
407 <row>
|
bos@686
|
408 <entry><command>svn cleanup</command></entry>
|
bos@686
|
409 <entry>n/a</entry>
|
belaran@970
|
410 <entry>Aucun nettoyage nécessaire.</entry>
|
bos@686
|
411 </row>
|
bos@686
|
412 <row>
|
bos@686
|
413 <entry><command>svn commit</command></entry>
|
bos@686
|
414 <entry><command>hg commit</command>; <command>hg
|
bos@686
|
415 push</command></entry>
|
belaran@970
|
416 <entry><command>hg push</command> publie les modifications
|
belaran@970
|
417 après leur enregistrement.</entry>
|
bos@686
|
418 </row>
|
bos@686
|
419 <row>
|
bos@686
|
420 <entry><command>svn copy</command></entry>
|
bos@686
|
421 <entry><command>hg clone</command></entry>
|
belaran@970
|
422 <entry>Pour créer une nouvelle branche</entry>
|
bos@686
|
423 </row>
|
bos@686
|
424 <row>
|
bos@686
|
425 <entry><command>svn copy</command></entry>
|
bos@686
|
426 <entry><command>hg copy</command></entry>
|
belaran@970
|
427 <entry>Pour copier des fichiers ou des répertoires</entry>
|
bos@686
|
428 </row>
|
bos@686
|
429 <row>
|
bos@686
|
430 <entry><command>svn delete</command> (<command>svn
|
bos@686
|
431 remove</command>)</entry>
|
bos@686
|
432 <entry><command>hg remove</command></entry>
|
bos@686
|
433 <entry></entry>
|
bos@686
|
434 </row>
|
bos@686
|
435 <row>
|
bos@686
|
436 <entry><command>svn diff</command></entry>
|
bos@686
|
437 <entry><command>hg diff</command></entry>
|
bos@686
|
438 <entry></entry>
|
bos@686
|
439 </row>
|
bos@686
|
440 <row>
|
bos@686
|
441 <entry><command>svn export</command></entry>
|
bos@686
|
442 <entry><command>hg archive</command></entry>
|
bos@686
|
443 <entry></entry>
|
bos@686
|
444 </row>
|
bos@686
|
445 <row>
|
bos@686
|
446 <entry><command>svn help</command></entry>
|
bos@686
|
447 <entry><command>hg help</command></entry>
|
bos@686
|
448 <entry></entry>
|
bos@686
|
449 </row>
|
bos@686
|
450 <row>
|
bos@686
|
451 <entry><command>svn import</command></entry>
|
bos@686
|
452 <entry><command>hg addremove</command>; <command>hg
|
bos@686
|
453 commit</command></entry>
|
bos@686
|
454 <entry></entry>
|
bos@686
|
455 </row>
|
bos@686
|
456 <row>
|
bos@686
|
457 <entry><command>svn info</command></entry>
|
bos@686
|
458 <entry><command>hg parents</command></entry>
|
belaran@970
|
459 <entry>Affiche quelle révision est extraite</entry>
|
bos@686
|
460 </row>
|
bos@686
|
461 <row>
|
bos@686
|
462 <entry><command>svn info</command></entry>
|
bos@686
|
463 <entry><command>hg showconfig
|
bos@686
|
464 paths.parent</command></entry>
|
belaran@970
|
465 <entry>Affiche de quelle URL est extrait ce dépôt</entry>
|
bos@686
|
466 </row>
|
bos@686
|
467 <row>
|
bos@686
|
468 <entry><command>svn list</command></entry>
|
bos@686
|
469 <entry><command>hg manifest</command></entry>
|
bos@686
|
470 <entry></entry>
|
bos@686
|
471 </row>
|
bos@686
|
472 <row>
|
bos@686
|
473 <entry><command>svn log</command></entry>
|
bos@686
|
474 <entry><command>hg log</command></entry>
|
bos@686
|
475 <entry></entry>
|
bos@686
|
476 </row>
|
bos@686
|
477 <row>
|
bos@686
|
478 <entry><command>svn merge</command></entry>
|
bos@686
|
479 <entry><command>hg merge</command></entry>
|
bos@686
|
480 <entry></entry>
|
bos@686
|
481 </row>
|
bos@686
|
482 <row>
|
bos@686
|
483 <entry><command>svn mkdir</command></entry>
|
bos@686
|
484 <entry>n/a</entry>
|
belaran@970
|
485 <entry>Mercurial ne versionne pas les répertoires</entry>
|
bos@686
|
486 </row>
|
bos@686
|
487 <row>
|
bos@686
|
488 <entry><command>svn move</command> (<command>svn
|
bos@686
|
489 rename</command>)</entry>
|
bos@686
|
490 <entry><command>hg rename</command></entry>
|
bos@686
|
491 <entry></entry>
|
bos@686
|
492 </row>
|
bos@686
|
493 <row>
|
bos@686
|
494 <entry><command>svn resolved</command></entry>
|
bos@686
|
495 <entry><command>hg resolve -m</command></entry>
|
bos@686
|
496 <entry></entry>
|
bos@686
|
497 </row>
|
bos@686
|
498 <row>
|
bos@686
|
499 <entry><command>svn revert</command></entry>
|
bos@686
|
500 <entry><command>hg revert</command></entry>
|
bos@686
|
501 <entry></entry>
|
bos@686
|
502 </row>
|
bos@686
|
503 <row>
|
bos@686
|
504 <entry><command>svn status</command></entry>
|
bos@686
|
505 <entry><command>hg status</command></entry>
|
bos@686
|
506 <entry></entry>
|
bos@686
|
507 </row>
|
bos@686
|
508 <row>
|
bos@686
|
509 <entry><command>svn update</command></entry>
|
bos@686
|
510 <entry><command>hg pull -u</command></entry>
|
bos@686
|
511 <entry></entry>
|
bos@686
|
512 </row>
|
bos@686
|
513 </tbody>
|
bos@686
|
514 </tgroup>
|
bos@686
|
515 </table>
|
bos@686
|
516 </sect2>
|
bos@686
|
517 </sect1>
|
bos@686
|
518
|
bos@686
|
519 <sect1>
|
belaran@970
|
520 <title>Conseils utiles pour les débutants</title>
|
belaran@970
|
521
|
belaran@970
|
522 <para id="x_705">Avec la plupart des gestionnaire de révisions, afficher
|
belaran@970
|
523 un diff associé à une révision peut être assez douloureux. Par exemple,
|
belaran@970
|
524 avec Subversion, pour voir ce qui a été modifiée dans la révision 104654,
|
belaran@970
|
525 vous devez saisir <command>svn diff -r104653:104654</command>. Mercurial
|
belaran@970
|
526 élimine le besoin de saisir l'identifiant d'une révision deux fois dans
|
belaran@970
|
527 ce cas classique. Pour un simple diff, <command>hg
|
belaran@970
|
528 export<command></command>
|
belaran@970
|
529 104654</command> suffit. Pour l'entrée du journal suivi du diff,
|
belaran@970
|
530 <command>hg log -r104654</command>. </para>
|
belaran@970
|
531
|
belaran@970
|
532 <para id="x_706">Quand vous exécutez la commande <command>hg status</command>
|
belaran@970
|
533 sans aucun arguments, elle affiche l'état de l'ensemble de l'arboresence,
|
belaran@970
|
534 avec des chemins relatifs partant de la raçine du dépôt. Ceci rend
|
belaran@970
|
535 difficile de copier un nom de fichier depuis la sortie de la commande
|
belaran@970
|
536 <command>hg status</command> dans une autre ligne de commande. Si vous
|
belaran@970
|
537 fournissez un fichier ou un répertoire à la commande <command>hg
|
belaran@970
|
538 status</command>, elle va afficher les chemins relatif depuis votre
|
belaran@970
|
539 répertoire courant à la place. Ainsi, pour avoir un état sur l'ensemble
|
belaran@970
|
540 de l'arboresence à l'aide de <command>hg status</command>, avec des
|
belaran@970
|
541 chemins relatifs à votre répertoire courant, et non le raçine du dépôt,
|
belaran@970
|
542 ajoutez la sortie de <command>hg root</command> à la commande
|
belaran@970
|
543 <command>hg status</command>. Vous pouvez le faire aisément sur un
|
belaran@970
|
544 système Unix ainsi :</para>
|
bos@686
|
545
|
bos@686
|
546 <screen><prompt>$</prompt> <userinput>hg status `hg root`</userinput></screen>
|
bos@686
|
547 </sect1>
|
bos@559
|
548 </appendix>
|
bos@559
|
549
|
bos@559
|
550 <!--
|
bos@559
|
551 local variables:
|
bos@559
|
552 sgml-parent-document: ("00book.xml" "book" "appendix")
|
bos@559
|
553 end:
|
bos@559
|
554 -->
|