hgbook

changeset 962:bac1c207c76d

Fusion des remarques de Hughues avec celles de William
author Romain PELISSE <belaran@gmail.com>
date Thu Mar 26 08:57:10 2009 +0100 (2009-03-26)
parents e3913a4b5b26 dd7511a5c127
children 1dd00abb3fa9
files fr/tour-merge.tex
line diff
     1.1 --- a/fr/tour-merge.tex	Tue Feb 24 00:03:10 2009 +0100
     1.2 +++ b/fr/tour-merge.tex	Thu Mar 26 08:57:10 2009 +0100
     1.3 @@ -1,7 +1,7 @@
     1.4  \chapter{Un rapide tour de Mercurial: fusionner les travaux}
     1.5  \label{chap:tour-merge}
     1.6  
     1.7 -Nous avons maintenons étudié comment cloner un dépôt, effectuer
     1.8 +Nous avons maintenant étudié comment cloner un dépôt, effectuer
     1.9  des changements dedans, et récupérer ou transférer depuis un 
    1.10  autre dépôt. La prochaine étape est donc de \emph{fusionner} les
    1.11  modifications de différents dépôts.
    1.12 @@ -10,7 +10,7 @@
    1.13  				       %%% for 'Merging streams of work' ?
    1.14  La fusion\footnote{NdT: Je garde fusion mais le jargon professionnel 
    1.15  emploiera généralement le terme \textit{merge}.} est un aspect 
    1.16 -fondamental lorsqu'on travail avec un gestionnaire de source 
    1.17 +fondamental lorsqu'on travaille avec un gestionnaire de source 
    1.18  distribué.
    1.19  \begin{itemize}
    1.20  \item Alice et Bob ont chacun une copie personnelle du dépôt d'un
    1.21 @@ -19,15 +19,15 @@
    1.22    sien. Ils veulent un dépôt partagé avec à la fois le correctif du
    1.23    \textit{bug} et la nouvelle fonctionnalité.
    1.24  \item Je travaille régulièrement sur plusieurs tâches différentes sur
    1.25 -  un seul projet en même temps, chacun isolée dans son propre dépôt.
    1.26 +  un seul projet en même temps, chacun isolé dans son propre dépôt.
    1.27    Travailler ainsi signifie que je dois régulièrement fusionner une 
    1.28    partie de mon code avec celui des autres.
    1.29  \end{itemize}
    1.30  
    1.31 -Parce que la fusion est une opération si commune que je dois réaliser,
    1.32 +Parce que la fusion est une opération si commune à réaliser,
    1.33  Mercurial la rend facile. Étudions ensemble le déroulement des opérations.
    1.34 -Nous commencerons par faire un clone de encore un autre dépôt (vous voyez
    1.35 -comment on fait ça tout le temps ?) puis nous ferons quelques modifications
    1.36 +Nous commencerons encore par faire un clone d'un autre dépôt (vous voyez
    1.37 +que l'on fait ça tout le temps ?) puis nous ferons quelques modifications
    1.38  dessus.
    1.39  \interaction{tour.merge.clone}
    1.40  Nous devrions avoir maintenant deux copies de \filename{hello.c} avec 
    1.41 @@ -55,7 +55,7 @@
    1.42  \subsection{\textit{Head changesets}} %%%TODO: Hard (too?) to translate
    1.43  
    1.44  Une \textit{head}\footnote{NdT: Je garde \textit{head} que j'accorde 
    1.45 -au féminin comme la coutume oral l'a imposée.} est un \textit{changeset} 
    1.46 +au féminin comme la coutume orale l'a imposé.} est un \textit{changeset} 
    1.47  sans descendants, ou enfants, comme on les désigne parfois. La révision 
    1.48  \textit{tip} est une \textit{head}, car la dernière révision dans un dépôt 
    1.49  n'a aucun enfant, mais il est important de noter qu'un dépôt peut contenir 
    1.50 @@ -64,7 +64,7 @@
    1.51  \begin{figure}[ht]
    1.52    \centering
    1.53    \grafix{tour-merge-pull}
    1.54 -  \caption{Contenu d'un dépôt après avoir transférer le contenu du dépôt 
    1.55 +  \caption{Contenu d'un dépôt après avoir transféré le contenu du dépôt 
    1.56      \dirname{my-hello} dans le dépôt \dirname{my-new-hello}}
    1.57    \label{fig:tour-merge:pull}
    1.58  \end{figure}
    1.59 @@ -77,8 +77,8 @@
    1.60  vous pouvez voir que le \textit{\emph{changeset ID}} reste le même dans
    1.61  le nouveau dépôt, mais que le \emph{numéro de révision} reste le même.
    1.62  (Ceci est un parfait exemple de pourquoi il n'est fiable d'utiliser les
    1.63 -numéro de révision lorsque l'on discute d'un \textit{changeset}.) Vous
    1.64 -pouvez voir les \texit{heads} présente dans le dépôt en utilisant la 
    1.65 +numéros de révision lorsque l'on discute d'un \textit{changeset}.) Vous
    1.66 +pouvez voir les \texit{heads} présentes dans le dépôt en utilisant la 
    1.67  commande \hgcmd{heads}.
    1.68  \interaction{tour.merge.heads}
    1.69  
    1.70 @@ -102,7 +102,7 @@
    1.71    \label{fig:tour-merge:merge}
    1.72  \end{figure}
    1.73  
    1.74 -Ceci met à jour de l'espace de travail de manière à ce qu'il contienne
    1.75 +Ceci met à jour l'espace de travail de manière à ce qu'il contienne
    1.76  les modifications des \emph{deux} \textit{heads}, ce qui apparaît dans
    1.77  les sorties de la commande \hgcmd{parents} et le contenu de 
    1.78  \filename{hello.c}. 
    1.79 @@ -110,13 +110,13 @@
    1.80  
    1.81  \subsection{Effectuer le \textit{commit} du résultat de la fusion}
    1.82  
    1.83 -Dès l'instant où vous avez effectuer une fusion, \hgcmd{parents} vous
    1.84 -affichera deux parents, avant que vous n'exécuter la commande 
    1.85 +Dès l'instant où vous avez effectué une fusion, \hgcmd{parents} vous
    1.86 +affichera deux parents, avant que vous n'exécutiez la commande 
    1.87  \hgcmd{commit} sur le résultat de la fusion.
    1.88  \interaction{tour.merge.commit}
    1.89  Nous avons maintenant un nouveau \textit{tip}, remarquer qu'il contient
    1.90  \emph{à la fois} nos anciennes \textit{heads} et leurs parents. Ce sont
    1.91 -les mêmes révisions que nous avions affichés avec la commande 
    1.92 +les mêmes révisions que nous avions affichées avec la commande 
    1.93  \hgcmd{parents}.
    1.94  
    1.95  \interaction{tour.merge.tip}
    1.96 @@ -124,12 +124,14 @@
    1.97  de ce qui se passe dans l'espace de travail pendant la fusion, et comment ceci
    1.98  affecte le dépôt lors du \textit{commit}. Pendant la fusion, l'espace de travail,
    1.99  qui a deux \texit{changesets} comme parents, voit ces derniers devenir le parent
   1.100 +%%% TODO: le parent ou "les parents" : plus logique mais si il reste seulement 
   1.101 +%%% un changeset, alors c'est effectivement un parent (le changeset est hermaphrodite)
   1.102  d'un nouveau \textit{changeset}.
   1.103  
   1.104  \section{Fusionner les modifications en conflit}
   1.105  
   1.106  La plupart des fusions sont assez simple à réaliser, mais parfois 
   1.107 -vous vous trouverez à fusionner des fichiers où la modification touche
   1.108 +vous vous retrouverez à fusionner des fichiers où la modification touche
   1.109  la même portion de code, au sein d'un même fichier. À moins que ces
   1.110  modification ne soient identiques, ceci aboutira à un \emph{conflit},
   1.111  et vous devrez décider comment réconcilier les différentes modifications
   1.112 @@ -144,8 +146,8 @@
   1.113  
   1.114  La figure~\ref{fig:tour-merge:conflict} illustre un cas de modifications
   1.115  conflictuelles dans un document. Nous avons commencé avec une version simple
   1.116 -de ce fichier, puis nous avons ajoutés des modifications, pendant que 
   1.117 -quelqu'un d'autre modifie le même texte. Notre tâche dans la résolution
   1.118 +de ce fichier, puis nous avons ajouté des modifications, pendant que 
   1.119 +quelqu'un d'autre modifiait le même texte. Notre tâche dans la résolution
   1.120  du conflit est de décider à quoi le fichier devrait ressembler.
   1.121  
   1.122  Mercurial n'a pas de mécanisme interne pour gérer les conflits. 
   1.123 @@ -153,8 +155,8 @@
   1.124  Il s'agit d'un script shell qui est embarqué par Mercurial, vous
   1.125  pouvez le modifier si vous le voulez. Ce qu'il fait par défaut est
   1.126  d'essayer de trouver un des différents outils de fusion qui seront
   1.127 -probablement installé sur le système. Il commence par les outils
   1.128 -totalement automatique, et si ils échouent (parce que la résolution
   1.129 +probablement installés sur le système. Il commence par les outils
   1.130 +totalement automatiques, et si ils échouent (parce que la résolution
   1.131  du conflit nécessite une intervention humaine) ou si ils sont absents,
   1.132  le script tente d'exécuter certains outils graphiques de fusion.
   1.133  
   1.134 @@ -166,7 +168,7 @@
   1.135  \subsection{Utiliser un outil graphique de fusion}
   1.136  
   1.137  Mon outil de fusion préféré est \command{kdiff3}, que j'utilise ici
   1.138 -pour illustré les fonctionnalités classiques des outils graphiques 
   1.139 +pour illustrer les fonctionnalités classiques des outils graphiques 
   1.140  de fusion. Vous pouvez voir une capture d'écran de l'utilisation de 
   1.141  \command{kdiff3} dans la figure~\ref{fig:tour-merge:kdiff3}. Cet outil
   1.142  effectue une \emph{fusion \textit{three-way}}, car il y a trois différentes
   1.143 @@ -174,35 +176,36 @@
   1.144  supérieure de la fenêtre en trois panneaux:
   1.145  
   1.146  \begin{itemize}
   1.147 -\item A gauche on la version de \emph{base} du fichier, soit ~la plus 
   1.148 +\item A gauche on la version de \emph{base} du fichier, soit la plus 
   1.149    récente version des deux versions qu'on souhaite fusionner.
   1.150  \item Au centre, il y a ``notre'' version du fichier, avec le contenu 
   1.151    que nous avons modifié.
   1.152 -\item Sur la droite, on trouve ``leur'' version du fichier, celui qui qui
   1.153 +\item Sur la droite, on trouve ``leur'' version du fichier, celui qui
   1.154    contient le \textit{changeset} que nous souhaitons intégré. 
   1.155  \end{itemize}
   1.156  
   1.157  Dans le panneau en dessous, on trouve le \emph{résultat} actuel de notre
   1.158 -fusion. Notre tâche consiste donc à remplacement tout les textes en rouges,
   1.159 -qui indiquent des conflits non résolus, avec un fusion manuel et pertinente
   1.160 +fusion. Notre tâche consiste donc à remplacement tous les textes en rouges,
   1.161 +qui indiquent des conflits non résolus, avec une fusion manuelle et pertinente
   1.162  de ``notre'' version et de la ``leur''. 
   1.163  
   1.164 -Tout les quatre panneaux sont \emph{accrochés ensemble}, si nous déroulons
   1.165 +Tous les quatre panneaux sont \emph{accrochés ensemble}, si nous déroulons
   1.166  les ascenseurs verticalement ou horizontalement dans chacun d'entre eux, les
   1.167 -autres sont mise à jours avec la section correspondantes dans leurs fichiers.
   1.168 +autres sont mis à jour avec la section correspondante dans leurs fichiers
   1.169 +respectifs.
   1.170  
   1.171  \begin{figure}[ht]
   1.172    \centering
   1.173    \grafix{kdiff3}
   1.174 -  \caption{Utilisation de  \command{kdiff3} pour fusionner différents versions
   1.175 +  \caption{Utilisation de \command{kdiff3} pour fusionner différentes versions
   1.176    d'un fichier.}
   1.177    \label{fig:tour-merge:kdiff3}
   1.178  \end{figure}
   1.179  
   1.180  Pour chaque portion de fichier posant problème, nous pouvons choisir 
   1.181 -de résoudre le le conflit en utilisant en utilisant une combinaison 
   1.182 +de résoudre le conflit en utilisant une combinaison 
   1.183  de texte depuis la version de base, la notre, ou la leur. Nous pouvons 
   1.184 -aussi éditer manuellement les fichiers à tous moments, si c'est
   1.185 +aussi éditer manuellement les fichiers à tout moment, si c'est
   1.186  nécessaire.
   1.187  
   1.188  Il y a \emph{beaucoup} d'outils de fusion disponibles, bien trop pour
   1.189 @@ -211,7 +214,7 @@
   1.190  la fusion de fichier contenant un texte plat, certains sont spécialisé
   1.191  dans un format de fichier précis (généralement XML).
   1.192  
   1.193 -\subsection{A worked example} %TODO: Find a translation for this !
   1.194 +\subsection{Un exemple concret}
   1.195  
   1.196  Dans cet exemple, nous allons reproduire la modification de l'historique
   1.197  du fichier de la figure~\ref{fig:tour-merge:conflict} ci dessus. Commençons
   1.198 @@ -220,15 +223,15 @@
   1.199  \interaction{tour-merge-conflict.wife}
   1.200  Créons un clone de ce dépôt et faisons une modification dans le fichier.
   1.201  \interaction{tour-merge-conflict.cousin}
   1.202 -Et un autre clone, pour simuler que quelqu'un d'autre effectuer une
   1.203 +Et un autre clone, pour simuler que quelqu'un d'autre effectue une
   1.204  modification sur le fichier. (Ceci pour suggérer qu'il n'est pas rare
   1.205  de devoir effectuer des \textit{merge} avec vos propres travaux quand 
   1.206 -vous isoler les tâches dans des dépôts distincts. En effet, vous 
   1.207 +vous isolez les tâches dans des dépôts distincts. En effet, vous 
   1.208  aurez alors à trouver et résoudre certains conflits).
   1.209  \interaction{tour-merge-conflict.son}
   1.210  Maintenant que ces deux versions différentes du même fichier sont 
   1.211 -créées, nous allons configurer l'environnement approprié pour exécuter 
   1.212 -notre \textit{merge}.
   1.213 +créées, nous allons configurer l'environnement de manière appropriée pour
   1.214 +exécuter notre \textit{merge}.
   1.215  \interaction{tour-merge-conflict.pull}
   1.216  
   1.217  Dans cette exemple, je n'utiliserais pas la commande Mercurial
   1.218 @@ -237,8 +240,8 @@
   1.219  pour utiliser un outil graphique. À la place, je vais définir
   1.220  la variable d'environnement \envar{HGMERGE} pour indiquer à 
   1.221  Mercurial d'utiliser la commande non-interactive \command{merge}.
   1.222 -Cette dernière est embarqué par de nombreux systèmes ``à la Unix''.
   1.223 -Si vous exécuter cet exemple depuis votre ordinateur, ne vous
   1.224 +Cette dernière est embarquée par de nombreux systèmes ``à la Unix''.
   1.225 +Si vous exécutez cet exemple depuis votre ordinateur, ne vous
   1.226  occupez pas de définir \envar{HGMERGE}.
   1.227  \interaction{tour-merge-conflict.merge}
   1.228  Parce que \command{merge} ne peut pas résoudre les modifications
   1.229 @@ -251,9 +254,9 @@
   1.230  
   1.231  Mercurial peut distinguer, à la manière dont la commande \command{merge}
   1.232  se termine, qu'elle n'a pas été capable d'effectuer le \textit{merge},
   1.233 -alors il nous indique qu'il faut devons effectuer de nouveau cette
   1.234 +alors il nous indique que nous devons effectuer de nouveau cette
   1.235  opération. Ceci peut être très utile si, par exemple, nous exécutons un
   1.236 -outil graphique de fusion et que nous le quittons sans se rendre compte
   1.237 +outil graphique de fusion et que nous le quittons sans nous rendre compte
   1.238  qu'il reste des conflits ou simplement par erreur.
   1.239  
   1.240  Si le \textit{merge} automatique ou manuel échoue, il n'y a rien pour
   1.241 @@ -261,54 +264,54 @@
   1.242  et enfin effectuer le \textit{commit} du fichier:
   1.243  \interaction{tour-merge-conflict.commit}
   1.244  
   1.245 -\section{Simplifier l'enchaînement de \textit{pull-merge-commit} }
   1.246 +\section{Simplification de la séquence pull-merge-commit}
   1.247  \label{sec:tour-merge:fetch}
   1.248  
   1.249 -Le processus de fusion des modifications, comme indiqué ci dessus,
   1.250 -est simple, mais il requiert d'exécuter 3 commandes de suite.
   1.251 +La procédure pour effectuer la fusion indiquée ci-dessus est simple,
   1.252 +mais requiert le lancement de trois commandes à la suite.
   1.253  \begin{codesample2}
   1.254    hg pull
   1.255    hg merge
   1.256    hg commit -m 'Merged remote changes'
   1.257  \end{codesample2}
   1.258 -Dans le cas d'un \textit{commit} final, vous avez aussi besoin
   1.259 -de saisir un message, qui sera presque systématiquemetn un texte
   1.260 -sans grand interêt, juste pour mentionner qu'un \textit{merge} a
   1.261 -eu lieu.
   1.262 -
   1.263 -Il serait agréable de pouvoir réduire le nombre d'étape nécessaire.
   1.264 -En effet, Mercurial est distribué avec une extension nommée \hg{fetch}
   1.265 -qui le permet.
   1.266 -
   1.267 -Mercurial fournit un méchanisme flexible d'extension qui permet à 
   1.268 -quiquonque d'ajouter des fonctionnalités, tout en conservant le 
   1.269 -coeur de Mercurial relativement petit et facile à maintenir. Quelques
   1.270 -extensions ajoutent des nouvelles commandes que vous pouvez utiliser
   1.271 -depuis votre terminal, alors que d'autres opèrent ``dans les coulisses'',
   1.272 -pour ajouter par exemple des fonctionnalités au server.
   1.273 -
   1.274 -L'extension \hgext{fetch} ajoute une nouvelle commande appelée, sans
   1.275 -surprise, \hgcmd{fetch}. Cette extension agit comme une combinaison
   1.276 -de \hgcmd{pull}, \hgupdate{update} et \hgcmd{merge}. Elle commence
   1.277 -par faire un \textit{pull} des modifications depuis un autre dépôt dans
   1.278 -le dépôt local. Si elle trouve des modifications ajoutés à la \textit{head}
   1.279 -du dépôt, elle commencera à effectuer le \textit{merge}, puis elle 
   1.280 -déclenchera le \textit{commit} du résultat avec un message généré
   1.281 -automatiquement. Si aucune nouvell \textit{head} n'est ajouté elle
   1.282 -met à jour l'espace de travail avec le nouveau \textit{tip}.
   1.283 -
   1.284 -Activé l'extension \hgext{fetch} est très facile. Ouvrez le fichier
   1.285 -\sfilename{.hgrc}, et, soit allez dans la section \rcsection{extensions}
   1.286 -ou créer une section \rcsection{extensions} si elle absente. Ensuite, 
   1.287 -ajoutée une ligne qui contient simplement ``\Verb+fetch +''.
   1.288 +
   1.289 +Lors du \textit{commit} final, vous devez également saisir un message,
   1.290 +qui aura vraisemblablement assez peu d'intérêt.
   1.291 +
   1.292 +Il serait assez sympathique de pouvoir réduire le nombre d'opérations
   1.293 +nécessaire, si possible. De fait Mercurial est fourni avec une
   1.294 +extension appelé \hgext{fetch} qui fait justement cela.
   1.295 +
   1.296 +Mercurial fourni un mécanisme d'extension flexible qui permet à chacun
   1.297 +d'étendre ces fonctionnalités, tout en conservant le cœur de Mercurial
   1.298 +léger et facile à utiliser. Certains extensions ajoutent de nouvelles
   1.299 +commandes que vous pouvez utiliser en ligne de commande, alors que
   1.300 +d'autres travaillent ``en coulisse,'' par exemple en ajoutant des
   1.301 +possibilités au serveur.
   1.302 +
   1.303 +L'extension \hgext{fetch} ajoute une nouvelle commande nommée, sans
   1.304 +surprise, \hgcmd{fetch}. Cette extension résulte en une combinaison
   1.305 +de \hgcmd{pull}, \hgcmd{update} and \hgcmd{merge}. Elle commence par
   1.306 +récupérer les modifications d'un autre dépôt dans le dépôt courant.
   1.307 +Si elle trouve que les modifications ajoutent une nouvelle \textit{head},
   1.308 +elle effectue un \textit{merge}, et ensuite \texit{commit} le résultat
   1.309 +du \textit{merge} avec un message généré automatiquement. Si aucune
   1.310 +\textit{head} n'ont été ajouté, elle met à jour le répertoire de travail
   1.311 +au niveau du nouveau \textit{changeset} \textit{tip}.
   1.312 +
   1.313 +
   1.314 +Activer l'extension \hgext{fetch} est facile. Modifiez votre \sfilename{.hgrc},
   1.315 +et soit allez à la section \rcsection{extensions} soit créer une 
   1.316 +section \rcsection{extensions}. Ensuite ajoutez une ligne qui consiste
   1.317 +simplement en ``\Verb+fetch =''.
   1.318 +
   1.319  \begin{codesample2}
   1.320    [extensions]
   1.321    fetch =
   1.322  \end{codesample2}
   1.323 -(Normalement, à droite du signe ``\texttt{=}'' on verrait apparaître
   1.324 -l'adresse de l'extension sur le système, mais comme \hgext{fetch} est
   1.325 -une extension distribué avec Mercurial, ce dernier sait où la 
   1.326 -retrouver.)
   1.327 +(Normalement, sur la partie droite de ``\texttt{=}'' devrait apparaître
   1.328 +le chemin de l'extension, mais étant donné que l'extension \hgext{fetch}
   1.329 +fait partie de la distribution standard, Mercurial sait où la trouver.)
   1.330  
   1.331  %%% Local Variables: 
   1.332  %%% mode: latex