SVNBOOK Chap4 Branching and Merging Advanced Merging The Final Word on Merge Tracking

De Framalang Wiki.

Cette page fait partie du projet Version control with subversion.


Pseudo Code Rôle Statut
Sub Versif SVF Traduction Fait
Hotshot92 Relecture Fait
Validation



Sommaire

Titre

The Final Word on Merge Tracking

Recommandations finales sur le suivi des fusions

Paragraphe 1

The bottom line is that Subversion's merge-tracking feature has an extremely complex internal implementation, and the svn:mergeinfo property is the only window the user has into the machinery. Because the feature is relatively new, a numbers of edge cases and possible unexpected behaviors may pop up.

En fin de compte, la fonctionnalité de suivi des fusions de Subversion possède une mécanique interne extrêmement complexe et la propriété svn:mergeinfo est la seule lorgnette dont l'utilisateur dispose pour observer cette mécanique. Parce que cette fonctionnalité est relativement nouvelle, un certain nombre de cas litigieux et de comportements potentiellement inattendus risquent d'être rencontrés.

Paragraphe 2

For example, sometimes mergeinfo will be generated when running a simple svn copy or svn move command. Sometimes mergeinfo will appear on files that you didn't expect to be touched by an operation. Sometimes mergeinfo won't be generated at all, when you expect it to. Furthermore, the management of mergeinfo metadata has a whole set of taxonomies and behaviors around it, such as "explicit" versus "implicit" mergeinfo, "operative" versus "inoperative" revisions, specific mechanisms of mergeinfo "elision," and even "inheritance" from parent to child directories.

Par exemple, mergeinfo sera parfois générée lors d'une simple commande svn copy ou svn move. Parfois mergeinfo apparaîtra sur des fichiers dont vous n'auriez pas imaginé qu'ils soient touchés par une opération. Parfois mergeinfo ne sera pas du tout générée, contrairement à ce que vous attendiez. De plus, la gestion de la métadonnée mergeinfo a tout un ensemble de taxonomies et de comportements qui lui sont associés, tels que des mergeinfo "explicites" par opposition à "implicites", des révisions "opérationnelles" par opposition à "non-opérationnelles", des mécanismes spécifiques d'"élision" de mergeinfo, et même d'"héritage" de répertoires parents à sous-répertoires.

Paragraphe 3

We've chosen not to cover these detailed topics in this book for a couple of reasons. First, the level of detail is absolutely overwhelming for a typical user. Second, as Subversion continues to improve, we feel that a typical user shouldn't have to understand these concepts; they'll eventually fade into the background as pesky implementation details. All that said, if you enjoy this sort of thing, you can get a fantastic overview in a paper posted at CollabNet's website: http://www.collab.net/community/subversion/articles/merge-info.html.

Nous avons choisi de ne pas couvrir en détail ces sujets dans ce livre pour plusieurs raisons. Premièrement, l'utilisateur moyen serait totalement submergé par le niveau de détail disponible. Deuxièmement, au fur et à mesure que Subversion s'améliore, nous estimons que l'utilisateur moyen ne devrait pas avoir à comprendre ces concepts ; en tant que détails d'implémentation agaçants, ils finiront par disparaître à l'arrière-plan. Malgré tout ce qui vient d'être dit, si vous appréciez ce genre de choses, vous en trouverez une formidable vue d'ensemble dans un article posté sur le site internet de Collabnet : http://www.collab.net/community/subversion/articles/merge-info.html.

Paragraphe 4

For now, if you want to steer clear of bugs and odd behaviors in automatic merging, the CollabNet article recommends that you stick to these simple best practices:

  • For short-term feature branches, follow the simple procedure described throughout the section called "Basic Merging".
  • For long-lived release branches (as described in the section called "Common Branching Patterns"), perform merges only on the root of the branch, not on subdirectories.
  • Never merge into working copies with a mixture of working revision numbers, or with "switched" subdirectories (as described next in the section called "Traversing Branches"). A merge target should be a working copy which represents a single location in the repository at a single point in time.
  • Don't ever edit the svn:mergeinfo property directly; use svn merge with the --record-only option to effect a desired change to the metadata (as demonstrated in the section called "Blocking Changes").
  • Always make sure you have complete read access to all of your merge sources, and that your target working copy has no sparse directories.

Pour le moment, si vous voulez rester à l'écart des bogues et autres comportements inattendus des fusions automatiques, l'article de Collabnet recommande que vous vous en teniez simplement aux bonnes pratiques suivantes :

  • Pour les branches fonctionnelles à courte durée de vie, suivez la procédure simple décrite dans le paragraphe "Fusionner : pratiques de base".
  • Pour les branches de publication à longue durée de vie (comme décrites dans le paragraphe appelé "Modèles courants de gestion des branches"), ne pratiquez de fusions que sur la racine de la branche, pas sur des sous-répertoires.
  • Ne pratiquez jamais de fusion vers des copies de travail contenant un mélange de numéros de révisions de travail, ou ayant des sous-répertoires "déportés" (comme décrit par la suite dans le paragraphe appelé "Parcourir les branches"). La cible d'une fusion doit être une copie de travail qui représente un emplacement unique à un moment unique dans le dépôt.
  • Ne modifiez jamais la propriété svn:mergeinfo directement ; utilisez svn merge avec l'option --record-only pour appliquer une modification désirée à cette métadonnée (comme expliqué au paragraphe appelé "Bloquer des modifications").
  • Assurez-vous toujours d'avoir l'accès complet en lecture à toutes vos sources de fusion, et que votre copie de travail cible n'a pas de dossiers clairsemés.