Commits

Romain Pelisse committed e77ede0

Two third of tour-merge.tex done

Comments (0)

Files changed (1)

fr/tour-merge.tex

-\chapter{A tour of Mercurial: merging work}
+\chapter{Un rapide tour de Mercurial: fusionner les travaux}
 \label{chap:tour-merge}
 
-We've now covered cloning a repository, making changes in a
-repository, and pulling or pushing changes from one repository into
-another.  Our next step is \emph{merging} changes from separate
-repositories.
+Nous avons maintenons étudié comment clôner un dépôt, effectuer
+des changements dedans, et récupérer ou transférer depuis un 
+autre dépôt. La prochaine étape est donc de \emph{fusionner} les
+modifications de différents dépôts.
 
-\section{Merging streams of work}
-
-Merging is a fundamental part of working with a distributed revision
-control tool.
+\section{Fusionner différents travaux} %%%TODO: better translation
+				       %%% for 'Merging streams of work' ?
+La fusion\footnote{NdT: Je garde fusion mais le jargon professionnel 
+employera généralement le terme \textit{merge}.} est un aspect 
+fondamental lorsqu'on travail avec un gestionnaire de source 
+distribé.
 \begin{itemize}
-\item Alice and Bob each have a personal copy of a repository for a
-  project they're collaborating on.  Alice fixes a bug in her
-  repository; Bob adds a new feature in his.  They want the shared
-  repository to contain both the bug fix and the new feature.
-\item I frequently work on several different tasks for a single
-  project at once, each safely isolated in its own repository.
-  Working this way means that I often need to merge one piece of my
-  own work with another.
+\item Alice et Bob ont chacun une copie personnelle du dépôt d'un
+  projet sur lequel ils collaborent. Alice corrige un \textit{bug} 
+  dans son dépôt, et Bob ajoute une nouvelle fonctionnalité dans le
+  sien. Ils veulent un dépôt partagé avec à la fois le correctif du
+  \textit{bug} et la nouvelle fonctionnalité.
+\item Je travaille régulièrement sur plusieurs tâches différentes sur
+  un seul projet en même temps, chacun isolée dans son propre dépôt.
+  Travailler ainsi signifie que je dois régulièrement fusionner une 
+  partie de mon code avec celui des autres.
 \end{itemize}
 
-Because merging is such a common thing to need to do, Mercurial makes
-it easy.  Let's walk through the process.  We'll begin by cloning yet
-another repository (see how often they spring up?) and making a change
-in it.
+Parce que la fusion est une opération si commune que je dois réaliser,
+Mercurial la rend facile. Etudions ensemble le déroulement des opérations.
+Nous commencerons par faire un clone d'encore un autre dépôt (vous voyez
+comment on fait ça tout le temps ?) puis nous ferons quelques modifications
+dessus.
 \interaction{tour.merge.clone}
-We should now have two copies of \filename{hello.c} with different
-contents.  The histories of the two repositories have also diverged,
-as illustrated in figure~\ref{fig:tour-merge:sep-repos}.
+Nous devrions avoir maintenant deux copies de \filename{hello.c} avec 
+des contenus différents. Les historiques de ces deux dépôts ont aussi 
+divergés, comme illustré dans la figure~\ref{fig:tour-merge:sep-repos}.
+
 \interaction{tour.merge.cat}
 
 \begin{figure}[ht]
   \centering
   \grafix{tour-merge-sep-repos}
-  \caption{Divergent recent histories of the \dirname{my-hello} and
-    \dirname{my-new-hello} repositories}
+  \caption{Historiques récent divergents des dépôts \dirname{my-hello} 
+  et \dirname{my-new-hello}}
   \label{fig:tour-merge:sep-repos}
 \end{figure}
 
-We already know that pulling changes from our \dirname{my-hello}
-repository will have no effect on the working directory.
+Nous savons déjà que récupérer les modifications depuis notre dépôt 
+\dirname{my-hello} n'aura aucun effet sur l'espace de travail.
+
 \interaction{tour.merge.pull}
-However, the \hgcmd{pull} command says something about ``heads''.  
 
-\subsection{Head changesets}
+Néanmoins, la commande \hgcmd{pull} nous indique quelquechose au 
+sujet des ``heads''.
 
-A head is a change that has no descendants, or children, as they're
-also known.  The tip revision is thus a head, because the newest
-revision in a repository doesn't have any children, but a repository
-can contain more than one head.
+\subsection{\textit{Head changesets}} %%%TODO: Hard (too?) to translate
+
+Une \textit{head}\footnote{NdT: Je garde \textit{head} que j'accorde 
+au féminin comme la coutume oral l'a imposée.} est un \textit{changeset} 
+sans descendants, ou enfants, comme on les désigne parfois. La révision 
+\textit{tip} est une \textit{head}, car la dernière révision dans un dépôt 
+n'a aucun enfant, mais il est important de noter qu'un dépôt peut contenir 
+plus d'une \textit{head}.
 
 \begin{figure}[ht]
   \centering
   \grafix{tour-merge-pull}
-  \caption{Repository contents after pulling from \dirname{my-hello} into
-    \dirname{my-new-hello}}
+  \caption{Contenu d'un dépôt après avoir transférer le contenu du dépôt 
+    \dirname{my-hello} dans le dépôt \dirname{my-new-hello}}
   \label{fig:tour-merge:pull}
 \end{figure}
 
-In figure~\ref{fig:tour-merge:pull}, you can see the effect of the
-pull from \dirname{my-hello} into \dirname{my-new-hello}.  The history
-that was already present in \dirname{my-new-hello} is untouched, but a
-new revision has been added.  By referring to
-figure~\ref{fig:tour-merge:sep-repos}, we can see that the
-\emph{changeset ID} remains the same in the new repository, but the
-\emph{revision number} has changed.  (This, incidentally, is a fine
-example of why it's not safe to use revision numbers when discussing
-changesets.)  We can view the heads in a repository using the
-\hgcmd{heads} command.
+Dans la figure~\ref{fig:tour-merge:pull}, vous pouvez constater l'effet
+d'un \textit{pull} depuis le dépôt \dirname{my-hello} dans le dépôt 
+\dirname{my-new-hello}. L'historique qui était déjà présent dans le dépôt
+\dirname{my-new-hello} reste intact, mais une nouvelle révision a été 
+ajoutée. En vous reportant à la figure~\ref{fig:tour-merge:sep-repos},
+vous pouvez voir que le \textit{\emph{changeset ID}} reste le même dans
+le nouveau dépôt, mais que le \emph{numéro de révision} reste le même.
+(Ceci est un parfait exemple de pourquoi il n'est fiable d'utiliser les
+numéro de révision lorsque l'on discute d'un \textit{changeset}.) Vous
+pouvez voir les \texit{heads} présente dans le dépôt en utilisant la 
+commande \hgcmd{heads}.
 \interaction{tour.merge.heads}
 
-\subsection{Performing the merge}
+\subsection{Effectuer la fusion}
 
-What happens if we try to use the normal \hgcmd{update} command to
-update to the new tip?
+Que se passe-t-il quand vous essayez d'utiliser la commande \hgcmd{update} 
+pour mettre à jour votre espace de travail au nouveau \textit{tip}.
 \interaction{tour.merge.update}
-Mercurial is telling us that the \hgcmd{update} command won't do a
-merge; it won't update the working directory when it thinks we might
-be wanting to do a merge, unless we force it to do so.  Instead, we
-use the \hgcmd{merge} command to merge the two heads.
+Mercurial nous prévient que la commande \hgcmd{update} n'effectuera pas
+la fusion, il ne veut pas mettre à jour l'espace de travail quand il 
+estime que nous pourrions avoir besoin d'une fusion, à moins de lui
+forcer la main. À la place, il faut utiliser la commande \hgcmd{merge}
+pour fusionner les deux \textit{heads}.
 \interaction{tour.merge.merge}
 
 \begin{figure}[ht]
   \centering
   \grafix{tour-merge-merge}
-  \caption{Working directory and repository during merge, and
-    following commit}
+  \caption{Espace de travail et dépôt lors d'une fusion, et dans le
+    \textit{commit} qui suit.}
   \label{fig:tour-merge:merge}
 \end{figure}
 
-This updates the working directory so that it contains changes from
-\emph{both} heads, which is reflected in both the output of
-\hgcmd{parents} and the contents of \filename{hello.c}.
+Ceci met à jour de l'espace de travail de manière à ce qu'il contienne
+les modifications des \emph{deux} \textit{heads}, ce qui apparait dans
+les sorties de la commande \hgcmd{parents} et le contenu de 
+\filename{hello.c}. 
 \interaction{tour.merge.parents}
 
 \subsection{Committing the results of the merge}
 Whenever we've done a merge, \hgcmd{parents} will display two parents
 until we \hgcmd{commit} the results of the merge.
 \interaction{tour.merge.commit}
-We now have a new tip revision; notice that it has \emph{both} of
-our former heads as its parents.  These are the same revisions that
-were previously displayed by \hgcmd{parents}.
+Nous avons maintenant un nouveau \textit{tip}, remarquer qu'il contient
+\emph{à la fois} nos anciennes \textit{heads} et leurs parents. Ce sont
+les mêmes révisions que nous avions affichés avec la commande 
+\hgcmd{parents}.
+
 \interaction{tour.merge.tip}
-In figure~\ref{fig:tour-merge:merge}, you can see a representation of
-what happens to the working directory during the merge, and how this
-affects the repository when the commit happens.  During the merge, the
-working directory has two parent changesets, and these become the
-parents of the new changeset.
+Dans la figure~\ref{fig:tour-merge:merge}, vous pouvez voir une représentation
+de ce qui se passe dans l'espace de travail pendant la fusion, et comment ceci
+affecte le dépôt lors du \textit{commit}. Pendant la fusion, l'espace de travail,
+qui a deux \texit{changesets} comme parents, voit ces derniers devenir le parent
+d'un nouveau \textit{changeset}.
 
-\section{Merging conflicting changes}
+\section{Fusionner les modifications en conflit}
 
-Most merges are simple affairs, but sometimes you'll find yourself
-merging changes where each modifies the same portions of the same
-files.  Unless both modifications are identical, this results in a
-\emph{conflict}, where you have to decide how to reconcile the
-different changes into something coherent.
+La plupart des fusions sont assez simple à réaliser, mais parfois 
+vous vous trouverez à fusioner des fichiers où la modification touche
+la même portion de code, au sein d'un même fichier. À moins que ces
+modification ne soient identiques, ceci aboutira à un \emph{conflit},
+et vous devrez décider comment réconcillier les différentes modifications
+dans un tout cohérent. 
 
 \begin{figure}[ht]
   \centering
   \grafix{tour-merge-conflict}
-  \caption{Conflicting changes to a document}
+  \caption{Modifications conflictuelles dans un document}
   \label{fig:tour-merge:conflict}
 \end{figure}
 
-Figure~\ref{fig:tour-merge:conflict} illustrates an instance of two
-conflicting changes to a document.  We started with a single version
-of the file; then we made some changes; while someone else made
-different changes to the same text.  Our task in resolving the
-conflicting changes is to decide what the file should look like.
+La figure~\ref{fig:tour-merge:conflict} illustre un cas de modifications
+conflictuelles dans un document. Nous avons commencé avec une version simple
+de ce fichier, puis nous avons ajoutés des modifications, pendant que 
+quelqu'un d'autre modifie le même texte. Notre tâche dans la résolution
+du conflit est de décider à quoi le fichier devrait ressembler.
 
-Mercurial doesn't have a built-in facility for handling conflicts.
-Instead, it runs an external program called \command{hgmerge}.  This
-is a shell script that is bundled with Mercurial; you can change it to
-behave however you please.  What it does by default is try to find one
-of several different merging tools that are likely to be installed on
-your system.  It first tries a few fully automatic merging tools; if
-these don't succeed (because the resolution process requires human
-guidance) or aren't present, the script tries a few different
-graphical merging tools.
+Mercurial n'a pas de mécanisme interne pour gérer les conflits. 
+À la place, il exéctue un programme externe appelé \command{hgmerge}.
+Il s'agit d'un script shell qui est embarqué par Mercurial, vous
+pouvez le modifier si vous le voulez. Ce qu'il fait par défaut est
+d'essayer de trouver un des différents outils de fusion qui seront
+probablement installé sur le système. Il commence par les outils
+totalement automatique, et si ils échouent (parce que la résolution
+du conflit nécessite une intervention humaine) ou si ils sont absents,
+le script tente d'exécuter certains outils graphiques de fusion.
 
-It's also possible to get Mercurial to run another program or script
-instead of \command{hgmerge}, by setting the \envar{HGMERGE}
-environment variable to the name of your preferred program.
+Il est aussi possible de demander à Mercurial d'exécuter un autre
+programme ou un autre script au lieu de la commande \command{hgmerge},
+en définissant la variable d'environement \envar{HGMERGE} avec le nom
+du programme de votre choix.
 
-\subsection{Using a graphical merge tool}
+\subsection{Utiliser un outil graphique de fusion}
 
-My preferred graphical merge tool is \command{kdiff3}, which I'll use
-to describe the features that are common to graphical file merging
-tools.  You can see a screenshot of \command{kdiff3} in action in
-figure~\ref{fig:tour-merge:kdiff3}.  The kind of merge it is
-performing is called a \emph{three-way merge}, because there are three
-different versions of the file of interest to us.  The tool thus
-splits the upper portion of the window into three panes:
+Mon outil de fusion préféré est \command{kdiff3}, que j'utilise ici
+pour illustré les fonctionnalités classiques des outils graphiques 
+de fusion. Vous pouvez voir une capture d'écran de l'utilisation de 
+\command{kdiff3} dans la figure~\ref{fig:tour-merge:kdiff3}. Cet outil
+effectue une \emph{fusion \textit{three-way}}, car il y a trois différentes
+versions du fichier qui nous intéresse. Le fichier découpe la partie
+supérieure de la fenêtre en trois panneaux:
+
 \begin{itemize}
-\item At the left is the \emph{base} version of the file, i.e.~the
-  most recent version from which the two versions we're trying to
-  merge are descended.
-\item In the middle is ``our'' version of the file, with the contents
-  that we modified.
-\item On the right is ``their'' version of the file, the one that
-  from the changeset that we're trying to merge with.
+\item A gauche on la version de \emph{base} du fichier, soit ~la plus 
+  récente version des deux versions qu'on souhaite fusionner.
+\item Au centre, il y a ``notre'' version du fichier, avec le contenu 
+  que nous avons modifié.
+\item Sur la droite, on trouve ``leur'' version du fichier, celui qui qui
+  contient le \textit{changeset} que nous souhaitons intégré. 
 \end{itemize}
-In the pane below these is the current \emph{result} of the merge.
-Our task is to replace all of the red text, which indicates unresolved
-conflicts, with some sensible merger of the ``ours'' and ``theirs''
-versions of the file.
 
-All four of these panes are \emph{locked together}; if we scroll
-vertically or horizontally in any of them, the others are updated to
-display the corresponding sections of their respective files.
+Dans le panneau en dessous, on trouve le \emph{résultat} actuel de notre
+fusion. Notre tâche consiste donc à remplacement tout les textes en rouges,
+qui indiquent des conflits non résolus, avec un fusion manuel et pertinente
+de ``notre'' version et de la ``leur''. 
+
+Tout les quatres panneaux sont \emph{accrochés ensemble}, si nous déroulons
+les ascenseurs verticalement ou horizontalement dans chacun d'entre eux, les
+autres sont mise à jours avec la section correspondantes dans leurs fichiers.
 
 \begin{figure}[ht]
   \centering
   \grafix{kdiff3}
-  \caption{Using \command{kdiff3} to merge versions of a file}
+  \caption{Utilisation de  \command{kdiff3} pour fusionner différents versions
+  d'un fichier.}
   \label{fig:tour-merge:kdiff3}
 \end{figure}
 
-For each conflicting portion of the file, we can choose to resolve
-the conflict using some combination of text from the base version,
-ours, or theirs.  We can also manually edit the merged file at any
-time, in case we need to make further modifications.
+Pour chaque portion de fichier posant problème, nous pouvons choisir 
+de résoudre le le conlfit en utilisant en utilisant une combinaison 
+de texte depuis la version de base, la notre, ou la leur. Nous pouvons 
+aussi éditer manuellement les fichiers à tous moments, si c'est
+nécessaire.
 
-There are \emph{many} file merging tools available, too many to cover
-here.  They vary in which platforms they are available for, and in
-their particular strengths and weaknesses.  Most are tuned for merging
-files containing plain text, while a few are aimed at specialised file
-formats (generally XML).
+Il y a \emph{beaucoup} d'outils de fusion disponibles, bien trop pour
+en parler de tous ici. Leurs disponibilités varient selon les plateformes
+ainsi que leurs avantages et incovénients. La plupart sont optimisé pour
+la fusion de fichier contenant un texte plat, certains sont spécialisé
+dans un format de fichier précis (générallement XML).
 
 \subsection{A worked example}