hgbook
annotate fr/appA-svn.xml @ 1114:527b86d55d4a
inotify: update installation information
inotify is shipped in Mercurial since 1.0, which greatly simplifies the installation process
inotify is shipped in Mercurial since 1.0, which greatly simplifies the installation process
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Sun Dec 13 16:35:56 2009 +0900 (2009-12-13) |
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 <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 |
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 <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 |
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 --> |