hgbook

annotate fr/appA-svn.xml @ 1030:2ac31ea48a3d

merge with trunk
author Romain PELISSE <belaran@gmail.com>
date Thu Apr 22 12:39:32 2010 +0200 (2010-04-22)
parents cc81b4175833
children
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
JeanMarieClement@974 8 gestionnaire de révisions est d'expérimenter en migrant 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
youshe@984 14 si vous êtes habitués à un autre outil 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
JeanMarieClement@974 21 <literal>convert</literal>, qui permet d'importer un historique
JeanMarieClement@974 22 depuis les gestionnaire de révisions les plus courants. Au moment 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é
JeanMarieClement@974 53 comme source, voir <xref linkend="svn.filemap"/>.)</para>
belaran@970 54
belaran@970 55 <para id="x_6ed">Vous pouvez activer l'extension de la manière
JeanMarieClement@974 56 habituelle, en éditant votre fichier <filename>~/.hgrc</filename></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
JeanMarieClement@974 64 remap="it">framework</emphasis> de test <quote>Nose Unit</quote> 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
JeanMarieClement@974 70 manière incrémentale. En d'autres mots, après une première exécution de
JeanMarieClement@974 71 la commande <command>hg convert</command>, les exécutions ultérieures
JeanMarieClement@974 72 importeront les révisions ultérieures à l'exécution précédente.
youshe@984 73 La conversion incrémentale ne réussira que si
belaran@970 74 vous exécutez <command>hg convert</command> dans le même dépôt que vous
JeanMarieClement@974 75 aviez utilisé à l'origine, ceci parce que l'extension <literal>convert</literal>
JeanMarieClement@974 76 sauvegarde un certain nombre de méta-données privées dans le fichier
JeanMarieClement@974 77 <filename>.hg/shamap</filename> (non versioné) au sein du dépôt cible.
belaran@970 78 </para>
belaran@970 79
JeanMarieClement@974 80 <para id="x_707">Lorsque vous voulez faire des modifications en utilisant
belaran@970 81 Mercurial, le mieux est de faire un clone de l'ensemble de l'arborescence
JeanMarieClement@974 82 que vous souhaitez convertir, et de laisser l'arborescence d'origine pour
JeanMarieClement@974 83 de futures conversions incrémentales. C'est la manière la plus sûre pour vous laisser
JeanMarieClement@974 84 récupérer et fusionner les modifications futures depuis l'outil de gestion
JeanMarieClement@974 85 de révisions dans votre nouveau dépôt Mercurial.</para>
bos@693 86
bos@693 87 <sect2>
belaran@970 88 <title>Convertir plusieurs branches</title>
belaran@970 89
JeanMarieClement@974 90 <para id="x_708">La commande <command>hg convert</command> citée
JeanMarieClement@974 91 ci-dessus convertit seulement l'historique de la <literal>branche
JeanMarieClement@974 92 principale (trunk)</literal> du dépôt Subversion. Si nous utilisons
belaran@970 93 à la place l'URL <literal>http://python-nose.googlecode.com/svn</literal>,
JeanMarieClement@974 94 Mercurial va automatiquement détecter la
belaran@970 95 <literal>branche principale (trunk)</literal>, les <literal>étiquettes
youshe@984 96 (tags)</literal>, et les <literal>branches</literal> que les dépôts
JeanMarieClement@974 97 Subversion utilisent généralement, et les importera 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
JeanMarieClement@974 101 dans Mercurial se voit attribuer un nom de branche. Une fois la
JeanMarieClement@974 102 conversion achevée, vous pouvez obtenir la liste des 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
JeanMarieClement@974 109 <para id="x_70a">Une fois votre arborescence convertie,
JeanMarieClement@974 110 si vous souhaitez travailler selon la pratique habituelle sous Mercurial
JeanMarieClement@974 111 avec une arborescence qui ne contient qu'une seule branche, vous pouvez cloner
JeanMarieClement@974 112 cette 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
JeanMarieClement@974 119 <para id="x_6f0">Certains outils de gestion de révisions
JeanMarieClement@974 120 ne sauvegardent, avec les modifications, que les noms
JeanMarieClement@974 121 d'utilisateurs raccourcis. Ceux-ci peuvent être difficiles à
JeanMarieClement@974 122 interpréter. La norme avec Mercurial est de sauvegarder le
JeanMarieClement@974 123 nom du <emphasis remap="it">committeur</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
JeanMarieClement@974 128 un gestionnaire de révisions qui utilise seulement les noms
JeanMarieClement@974 129 raccourcis, 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
JeanMarieClement@974 132 attend un fichier qui contient des entrées sous la forme suivante:
belaran@970 133 </para>
bos@686 134
bos@686 135 <programlisting>arist = Aristotle &lt;aristotle@phil.example.gr&gt;
bos@686 136 soc = Socrates &lt;socrates@phil.example.gr&gt;</programlisting>
bos@686 137
belaran@970 138 <para id="x_6f2">Quand <literal>convert</literal> trouve une
JeanMarieClement@974 139 modification associée 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 &lt;aristotle@phil.example.gr&gt;</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
JeanMarieClement@974 149 <para id="x_6f3">Tous les projets n'ont pas un historique parfait.
JeanMarieClement@974 150 Il peut y avoir des répertoires qui n'auraient jamais dû être ajoutés,
JeanMarieClement@974 151 un fichier qui est trop volumineux, ou même une partie de la
JeanMarieClement@974 152 hiérarchie qui devrait ê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
JeanMarieClement@974 156 réorganiser les fichiers et les répertoires dans un projet lors de
JeanMarieClement@974 157 l'importation de son historique. Ceci est utile non seulement quand vous
belaran@970 158 importez l'historique d'un autre gestionnaire de révisions, mais
JeanMarieClement@974 159 aussi pour nettoyer ou réorganiser l'arborescence 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
JeanMarieClement@974 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
youshe@984 165 suivante :</para>
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>
JeanMarieClement@974 176
JeanMarieClement@974 177 <para id="x_6f6">La directive <literal>include</literal> inclut 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
JeanMarieClement@974 183 des fichiers ou répertoires, et autres fichiers qui ne sont pas
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
JeanMarieClement@974 187 emplacement à un autre, utilisez la directive
belaran@970 188 <literal>rename</literal>. Si vous avez besoin de déplacer un
JeanMarieClement@974 189 fichier ou un répertoire depuis un sous répertoire dans la racine
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>
JeanMarieClement@974 195 <title>Améliorer les performances de la conversion Subversion</title>
belaran@970 196
belaran@970 197 <para id="x_70b">Vous aurez souvent besoin de plusieurs essais
JeanMarieClement@974 198 avant d'arriver à la parfaite combinaison de fichier d'association de fichiers,
youshe@984 199 de fichier d'association de noms d'utilisateurs et des autres paramètres. Or,
youshe@984 200 convertir un dépôt Mercurial via un protocole comme <literal>ssh</literal>
JeanMarieClement@974 201 ou <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
JeanMarieClement@974 211 arborescence 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
youshe@984 215 Subversion du populaire projet Memcached en une arborescence Mercurial.
JeanMarieClement@974 216 Tout d'abord, 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
JeanMarieClement@974 220 <para id="x_70e">Puis, nous allons mettre en place un <quote>hook</quote> 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
JeanMarieClement@974 226 <para id="x_70f">Nous initialisons ensuite <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
JeanMarieClement@974 233 mirroring 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
JeanMarieClement@974 245 récupérer les récentes modifications dans notre miroir, puis <command>hg
JeanMarieClement@974 246 convert</command>
youshe@984 247 les importe dans notre arborescence Mercurial.</para>
belaran@970 248
belaran@970 249 <para id="x_713">Il y a deux avantages à utiliser un import à deux
JeanMarieClement@974 250 étages comme avec <command>svnsync</command>. Le premier
JeanMarieClement@974 251 est qu'il utilise du code de synchronisation réseau de Subversion
JeanMarieClement@974 252 plus efficace que la commande <command>hg convert</command>,
JeanMarieClement@974 253 et donc transfère moins de données par le réseau. Le deuxième
JeanMarieClement@974 254 est que l'import depuis un dépôt Subversion local est si rapide que
JeanMarieClement@974 255 vous pouvez peaufiner et réitérer les paramètres de conversion de
youshe@984 256 ce dernier sans souffrir de la qualité de la connexion réseau.</para>
bos@693 257 </sect2>
bos@686 258 </sect1>
bos@686 259
bos@686 260 <sect1>
JeanMarieClement@974 261 <title>Migrer depuis Subversion</title>
JeanMarieClement@974 262
JeanMarieClement@974 263 <para id="x_6f8">Subversion est le système de gestion de versions
JeanMarieClement@974 264 open source le plus populaire aujourd'hui. Bien qu'il y ait 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
JeanMarieClement@974 267 de jeux de commandes similaires et d'interfaces similaires.</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
JeanMarieClement@974 276 d'effectuer des accès au réseau que lorsque vous voulez
JeanMarieClement@974 277 explicitement communiquer avec un autre dépôt. Subversion, par contre,
youshe@984 278 ne conserve que peu d'informations localement, et le client
JeanMarieClement@974 279 doit donc communiquer avec le serveur central pour la
belaran@970 280 plupart des opérations communes.</para>
belaran@970 281
JeanMarieClement@974 282 <para id="x_6fa">Subversion s'en tire plus ou moins bien sans notion
JeanMarieClement@974 283 de branche réellement bien définie : quelle portion de l'espace de nommage
belaran@970 284 du serveur est une branche est une simple question de convention, le
JeanMarieClement@974 285 logiciel n'imposant rien à ce sujet. Mercurial considère
JeanMarieClement@974 286 un dépôt comme un élément de la gestion des branches.</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,
JeanMarieClement@978 295 si vous exécutez <command>svn log</command>, vous verrez l'historique
youshe@984 296 de la partie de l'arborescence où vous vous situez, et non de 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
youshe@984 300 différent : toutes les commandes s'appliquent à l'ensemble de l'arborescence
belaran@970 301 du dépôt. Exécutez la commande <command>hg log</command> et elle vous
youshe@984 302 donnera l'historique de l'ensemble de l'arborescence, quel que soit le
JeanMarieClement@978 303 sous-répertoire où vous vous situez. Si
JeanMarieClement@978 304 vous souhaitez obtenir l'historique d'un répertoire ou seulement d'un
JeanMarieClement@978 305 fichier, ajouter simplement le nom de celui-ci à la commande, par
JeanMarieClement@978 306 exemple <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
youshe@984 309 comportement par défaut est probablement ce qui risque de vous
youshe@984 310 surprendre le plus si vous passez 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
JeanMarieClement@978 317 désapprouvé) que différentes personnes collaborent sur une seule
belaran@970 318 branche. Si Alice et Bob travaillent ensemble, et Alice ajoute ses
youshe@984 319 modifications à leur branche partagée, Bob doit alors mettre à jour
JeanMarieClement@978 320 sa vue de la branche avant de pouvoir appliquer un commit.
JeanMarieClement@978 321 Puisqu'il n'a, à ce moment, pas effectué de commit
JeanMarieClement@978 322 des modifications qu'il a faites, il se peut qu'il ne corrompe
JeanMarieClement@978 323 ou ne perde
JeanMarieClement@978 324 ses modifications pendant ou après la mise à jour.</para>
belaran@970 325
belaran@970 326 <para id="x_6ff">Mercurial encourage, à l'inverse, un modèle
JeanMarieClement@978 327 "commit-puis-merge". Avant de récupérer des modifications depuis le
JeanMarieClement@978 328 serveur, ou avant d'y envoyer les siennes, Bob enregistre ses
JeanMarieClement@978 329 modifications de manière locale en appliquant un commit. C'est à dire
JeanMarieClement@978 330 que si Alice avait envoyé ses modifications sur le serveur avant
JeanMarieClement@978 331 que Bob n'envoie les siennes, ce dernier ne pourra le faire
JeanMarieClement@978 332 qu'après avoir récupéré et fusionné celles d'Alice avec les siennes.
JeanMarieClement@978 333 Si Bob fait alors une
JeanMarieClement@978 334 erreur lors de la fusion, il pourra toujours restaurer sa version, pour
JeanMarieClement@978 335 laquelle il avait appliqué le commit.</para>
belaran@970 336
belaran@970 337 <para id="x_700">Il est important de souligner qu'il s'agit de la
JeanMarieClement@978 338 manière habituelle de travailler avec ces outils. Subversion propose
JeanMarieClement@978 339 une manière plus sûre de "travailler-dans-votre-propre-branche", mais elle
JeanMarieClement@978 340 est assez complexe pour que, en pratique, elle ne soit que rarement utilisé.
JeanMarieClement@978 341 Mercurial propose de son côté un mode un peu moins sûr, permettant de
belaran@970 342 récupérer des modifications par dessus des modifications non
youshe@984 343 committées, qui reste toutefois très peu répandu.</para>
bos@686 344 </sect3>
bos@686 345
bos@686 346 <sect3>
belaran@970 347 <title>Publication vs changement locaux</title>
belaran@970 348
belaran@970 349 <para id="x_701">Une commande Subversion <command>svn
belaran@970 350 commit</command> publie immédiatement les modifications sur le
JeanMarieClement@978 351 serveur, où elles peuvent être vu par n'importe qui doté d'un privilège
belaran@970 352 de lecture.</para>
belaran@970 353
JeanMarieClement@978 354 <para id="x_702">Avec Mercurial, les modifications sont toujours d'abord
JeanMarieClement@978 355 enregistrées localement, et doivent être par la suite transférés par
belaran@970 356 la commande <command>hg push</command>.</para>
belaran@970 357
youshe@984 358 <para id="x_703">Chaque approche a ses avantages et ses inconvénients.
JeanMarieClement@978 359 Le modèle Subversion implique que les modifications soient publiées, et
JeanMarieClement@978 360 donc disponibles immédiatement. D'un autre coté, cela implique aussi
JeanMarieClement@978 361 que, pour pouvoir utiliser le logiciel normalement, un utilisateur doit
JeanMarieClement@978 362 avoir les droits d'écriture dans le dépôt, et ce privilège n'est pas concédé
JeanMarieClement@978 363 facilement par la plupart des projets Open Source.</para>
belaran@970 364
youshe@984 365 <para id="x_704">L'approche de Mercurial permet à quiconque de faire
belaran@970 366 un clone du dépôt et d'y ajouter ses modifications sans jamais avoir
youshe@984 367 besoin de la permission de quiconque, et l'on peut même publier ses
JeanMarieClement@978 368 modifications et continuer à participer comme on le désire. Toutefois, la
JeanMarieClement@978 369 distinction entre les commits et le transfert de ces derniers présente
JeanMarieClement@978 370 le risque que quelqu'un applique ses modifications par un commit local
JeanMarieClement@978 371 sur son portable et parte se promener pendant quelques jours en ayant
JeanMarieClement@978 372 oublié de les transférer, ce qui peut, dans certains rares cas,
JeanMarieClement@978 373 bloquer temporairement ses collaborateurs.</para>
bos@686 374 </sect3>
bos@686 375 </sect2>
bos@686 376
bos@686 377 <sect2>
belaran@970 378 <title>Références des commandes</title>
bos@686 379
bos@686 380 <table>
belaran@970 381 <title>Commandes Subversion et leurs équivalents Mercurial</title>
bos@686 382 <tgroup cols="3">
bos@686 383 <thead>
bos@686 384 <row>
bos@686 385 <entry>Subversion</entry>
bos@686 386 <entry>Mercurial</entry>
bos@686 387 <entry>Notes</entry>
bos@686 388 </row>
bos@686 389 </thead>
bos@686 390 <tbody>
bos@686 391 <row>
bos@686 392 <entry><command>svn add</command></entry>
bos@686 393 <entry><command>hg add</command></entry>
bos@686 394 <entry></entry>
bos@686 395 </row>
bos@686 396 <row>
bos@686 397 <entry><command>svn blame</command></entry>
bos@686 398 <entry><command>hg annotate</command></entry>
bos@686 399 <entry></entry>
bos@686 400 </row>
bos@686 401 <row>
bos@686 402 <entry><command>svn cat</command></entry>
bos@686 403 <entry><command>hg cat</command></entry>
bos@686 404 <entry></entry>
bos@686 405 </row>
bos@686 406 <row>
bos@686 407 <entry><command>svn checkout</command></entry>
bos@686 408 <entry><command>hg clone</command></entry>
bos@686 409 <entry></entry>
bos@686 410 </row>
bos@686 411 <row>
bos@686 412 <entry><command>svn cleanup</command></entry>
bos@686 413 <entry>n/a</entry>
belaran@970 414 <entry>Aucun nettoyage nécessaire.</entry>
bos@686 415 </row>
bos@686 416 <row>
bos@686 417 <entry><command>svn commit</command></entry>
bos@686 418 <entry><command>hg commit</command>; <command>hg
bos@686 419 push</command></entry>
belaran@970 420 <entry><command>hg push</command> publie les modifications
JeanMarieClement@978 421 après un commit.</entry>
bos@686 422 </row>
bos@686 423 <row>
bos@686 424 <entry><command>svn copy</command></entry>
bos@686 425 <entry><command>hg clone</command></entry>
belaran@970 426 <entry>Pour créer une nouvelle branche</entry>
bos@686 427 </row>
bos@686 428 <row>
bos@686 429 <entry><command>svn copy</command></entry>
bos@686 430 <entry><command>hg copy</command></entry>
belaran@970 431 <entry>Pour copier des fichiers ou des répertoires</entry>
bos@686 432 </row>
bos@686 433 <row>
bos@686 434 <entry><command>svn delete</command> (<command>svn
bos@686 435 remove</command>)</entry>
bos@686 436 <entry><command>hg remove</command></entry>
bos@686 437 <entry></entry>
bos@686 438 </row>
bos@686 439 <row>
bos@686 440 <entry><command>svn diff</command></entry>
bos@686 441 <entry><command>hg diff</command></entry>
bos@686 442 <entry></entry>
bos@686 443 </row>
bos@686 444 <row>
bos@686 445 <entry><command>svn export</command></entry>
bos@686 446 <entry><command>hg archive</command></entry>
bos@686 447 <entry></entry>
bos@686 448 </row>
bos@686 449 <row>
bos@686 450 <entry><command>svn help</command></entry>
bos@686 451 <entry><command>hg help</command></entry>
bos@686 452 <entry></entry>
bos@686 453 </row>
bos@686 454 <row>
bos@686 455 <entry><command>svn import</command></entry>
bos@686 456 <entry><command>hg addremove</command>; <command>hg
bos@686 457 commit</command></entry>
bos@686 458 <entry></entry>
bos@686 459 </row>
bos@686 460 <row>
bos@686 461 <entry><command>svn info</command></entry>
bos@686 462 <entry><command>hg parents</command></entry>
JeanMarieClement@978 463 <entry>Affiche la version sur la base de laquelle on travaille</entry>
bos@686 464 </row>
bos@686 465 <row>
bos@686 466 <entry><command>svn info</command></entry>
bos@686 467 <entry><command>hg showconfig
JeanMarieClement@978 468 paths.default</command></entry>
belaran@970 469 <entry>Affiche de quelle URL est extrait ce dépôt</entry>
bos@686 470 </row>
bos@686 471 <row>
bos@686 472 <entry><command>svn list</command></entry>
bos@686 473 <entry><command>hg manifest</command></entry>
bos@686 474 <entry></entry>
bos@686 475 </row>
bos@686 476 <row>
bos@686 477 <entry><command>svn log</command></entry>
bos@686 478 <entry><command>hg log</command></entry>
bos@686 479 <entry></entry>
bos@686 480 </row>
bos@686 481 <row>
bos@686 482 <entry><command>svn merge</command></entry>
bos@686 483 <entry><command>hg merge</command></entry>
bos@686 484 <entry></entry>
bos@686 485 </row>
bos@686 486 <row>
bos@686 487 <entry><command>svn mkdir</command></entry>
bos@686 488 <entry>n/a</entry>
belaran@970 489 <entry>Mercurial ne versionne pas les répertoires</entry>
bos@686 490 </row>
bos@686 491 <row>
bos@686 492 <entry><command>svn move</command> (<command>svn
bos@686 493 rename</command>)</entry>
bos@686 494 <entry><command>hg rename</command></entry>
bos@686 495 <entry></entry>
bos@686 496 </row>
bos@686 497 <row>
bos@686 498 <entry><command>svn resolved</command></entry>
bos@686 499 <entry><command>hg resolve -m</command></entry>
bos@686 500 <entry></entry>
bos@686 501 </row>
bos@686 502 <row>
bos@686 503 <entry><command>svn revert</command></entry>
bos@686 504 <entry><command>hg revert</command></entry>
bos@686 505 <entry></entry>
bos@686 506 </row>
bos@686 507 <row>
bos@686 508 <entry><command>svn status</command></entry>
bos@686 509 <entry><command>hg status</command></entry>
bos@686 510 <entry></entry>
bos@686 511 </row>
bos@686 512 <row>
bos@686 513 <entry><command>svn update</command></entry>
bos@686 514 <entry><command>hg pull -u</command></entry>
bos@686 515 <entry></entry>
bos@686 516 </row>
bos@686 517 </tbody>
bos@686 518 </tgroup>
bos@686 519 </table>
bos@686 520 </sect2>
bos@686 521 </sect1>
bos@686 522
bos@686 523 <sect1>
belaran@970 524 <title>Conseils utiles pour les débutants</title>
belaran@970 525
JeanMarieClement@978 526 <para id="x_705">Avec la plupart des gestionnaire de versions, afficher
belaran@970 527 un diff associé à une révision peut être assez douloureux. Par exemple,
belaran@970 528 avec Subversion, pour voir ce qui a été modifiée dans la révision 104654,
belaran@970 529 vous devez saisir <command>svn diff -r104653:104654</command>. Mercurial
belaran@970 530 élimine le besoin de saisir l'identifiant d'une révision deux fois dans
belaran@970 531 ce cas classique. Pour un simple diff, <command>hg
JeanMarieClement@978 532 export 104654</command> suffit. Pour obtenir une entrée du journal suivie d'un diff,
JeanMarieClement@978 533 <command>hg log -r104654 -p</command>.</para>
belaran@970 534
belaran@970 535 <para id="x_706">Quand vous exécutez la commande <command>hg status</command>
youshe@985 536 sans aucun argument, elle affiche l'état de l'ensemble de l'arborescence,
youshe@984 537 avec des chemins relatifs partant de la racine du dépôt. Ceci rend
belaran@970 538 difficile de copier un nom de fichier depuis la sortie de la commande
belaran@970 539 <command>hg status</command> dans une autre ligne de commande. Si vous
belaran@970 540 fournissez un fichier ou un répertoire à la commande <command>hg
belaran@970 541 status</command>, elle va afficher les chemins relatif depuis votre
belaran@970 542 répertoire courant à la place. Ainsi, pour avoir un état sur l'ensemble
youshe@984 543 de l'arborescence à l'aide de <command>hg status</command>, avec des
youshe@984 544 chemins relatifs à votre répertoire courant, et non la racine du dépôt,
belaran@970 545 ajoutez la sortie de <command>hg root</command> à la commande
belaran@970 546 <command>hg status</command>. Vous pouvez le faire aisément sur un
belaran@970 547 système Unix ainsi :</para>
bos@686 548
bos@686 549 <screen><prompt>$</prompt> <userinput>hg status `hg root`</userinput></screen>
bos@686 550 </sect1>
bos@559 551 </appendix>
bos@559 552
bos@559 553 <!--
bos@559 554 local variables:
bos@559 555 sgml-parent-document: ("00book.xml" "book" "appendix")
bos@559 556 end:
bos@559 557 -->