SVNBOOK Chap4 Branching and Merging Traversing Branches

De Framalang Wiki.

Cette page fait partie du projet Version control with subversion.


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



Sommaire

Titre

Traversing Branches

Parcourir les branches

Paragraphe 1

The svn switch command transforms an existing working copy to reflect a different branch. While this command isn't strictly necessary for working with branches, it provides a nice shortcut. In our earlier example, after creating your private branch, you checked out a fresh working copy of the new repository directory. Instead, you can simply ask Subversion to change your working copy of /calc/trunk to mirror the new branch location:

La commande svn switch transforme une copie de travail existante de telle sorte qu'elle pointe vers une branche différente. Bien que la connaissance de cette commande ne soit pas absolument nécessaire pour travailler avec des branches, elle fournit un raccourci utile. Dans notre exemple précédent, après avoir créé votre branche privée, vous avez extrait une toute nouvelle copie de travail du nouveau répertoire du dépôt. A la place, vous pouvez simplement demander à Subversion de modifier votre copie de travail de /calc/trunk pour qu'elle pointe vers l'emplacement de la nouvelle branche :

Paragraphe 2

 $ cd calc
  
 $ svn info | grep URL
 URL: http://svn.example.com/repos/calc/trunk
  
 $ svn switch http://svn.example.com/repos/calc/branches/my-calc-branch
 U   integer.c
 U   button.c
 U   Makefile
 Updated to revision 341.
  
 $ svn info | grep URL
 URL: http://svn.example.com/repos/calc/branches/my-calc-branch
 $ cd calc
  
 $ svn info | grep URL
 URL: http://svn.exemple.com/depot/calc/trunk
  
 $ svn switch http://svn.exemple.com/depot/calc/branches/ma-branche-calc
 U   entier.c
 U   bouton.c
 U   Makefile
 Actualisé à la révision 341.
  
 $ svn info | grep URL
 URL: http://svn.exemple.com/depot/calc/branches/ma-branche-calc
--Sub Versif 8 avril 2009 à 13:55 (CEST): il semble que "Updated to revision " est traduit par "Actualisé à la révision ", tandis qu'à "At revision " est traduit par "À la révision ".

Paragraphe 3

"Switching" a working copy that has no local modifications to a different branch results in the working copy looking just as it would if you'd done a fresh checkout of the directory. It's usually more efficient to use this command, because often branches differ by only a small degree. The server sends only the minimal set of changes necessary to make your working copy reflect the branch directory.

"Faire pointer" (ou "déporter") une copie de travail qui n'a pas de modifications locales vers une branche différente a pour résultat que la copie de travail a exactement le même aspect que si vous aviez effectué une extraction brute du répertoire. C'est en général plus efficace d'utiliser cette commande, car les différences entre les branches sont souvent minimes. Le serveur n'envoie que le minimum de modifications nécessaire pour faire pointer votre copie de travail vers le répertoire de la branche.

Paragraphe 4

The svn switch command also takes a --revision (-r) option, so you need not always move your working copy to the HEAD of the branch.

La commande svn switch accepte également le paramètre --revision (-r), pour que que vous n'ayez pas toujours besoin de faire pointer votre copie de travail vers la révision HEAD de la branche.

Paragraphe 5

Of course, most projects are more complicated than our calc example, and contain multiple subdirectories. Subversion users often follow a specific algorithm when using branches: 1. Copy the project's entire "trunk" to a new branch directory. 2. Switch only part of the trunk working copy to mirror the branch.

Bien sûr, la plupart des projets sont plus compliqués que notre exemple calc, et contiennent de multiples sous-dossiers. Les utilisateurs de Subversion suivent souvent un algorithme précis quand ils utilisent des branches : 1. Copier le "tronc" entier du projet vers une nouvelle branche. 2. Ne déporter qu'une partie de la copie de travail du tronc pour qu'elle pointe sur la branche.

Paragraphe 6

In other words, if a user knows that the branch work needs to happen on only a specific subdirectory, she uses svn switch to move only that subdirectory to the branch. (Or sometimes users will switch just a single working file to the branch!) That way, the user can continue to receive normal "trunk" updates to most of her working copy, but the switched portions will remain immune (unless someone commits a change to her branch). This feature adds a whole new dimension to the concept of a "mixed working copy" - not only can working copies contain a mixture of working revisions, but they can also contain a mixture of repository locations as well.

En d'autres termes, si un utilisateur sait que le travail sur la branche ne doit avoir lieu que sur un sous-dossier donné, il utilise svn switch pour ne faire pointer que ce sous-dossier vers la branche (ou parfois des utilisateurs ne vont faire pointer qu'un unique fichier de travail vers la branche !). De cette façon, l'utilisateur peut continuer à recevoir les mises à jour normales du "tronc" vers la plus grande partie de sa copie de travail, mais les portions déportées ne seront pas touchées (à moins que quelqu'un ne propage une modification à sa branche). Cette fonctionnalité ajoute une dimension complètement nouvelle au concept de "copie de travail mixte" - les copies de travail peuvent non seulement contenir un mélange de révisions de travail, mais elles peuvent également contenir un mélange d'emplacements du dépôt.

Sub Versif 2 février 2009 à 16:10 (CET)

Traduction de mixed par mixte, afin d'inclure la dimension de mélange d'emplacements du dépôt, contrairement à "copies de travail à révisions mélangées" trop limité utilisé dans le chapitre 1. A valider/corriger.

Paragraphe 7

If your working copy contains a number of switched subtrees from different repository locations, it continues to function as normal. When you update, you'll receive patches to each subtree as appropriate. When you commit, your local changes will still be applied as a single, atomic change to the repository.

Si votre copie de travail contient un certain nombre de sous-arborescences pointant vers des emplacements variés du dépôt, elle continue à fonctionner normalement. Quand vous la mettrez à jour, vous recevrez comme il se doit les correctifs pour chaque sous-arborescence. Quand vous effectuerez une propagation, vos modifications locales s'appliqueront toujours au dépôt en tant qu'une unique modification atomique.

Paragraphe 8

Note that while it's okay for your working copy to reflect a mixture of repository locations, these locations must all be within the same repository. Subversion repositories aren't yet able to communicate with one another; that feature is planned for the future. [24]

Remarquez que bien qu'il soit possible pour votre copie de travail de pointer vers une variété d'emplacements du dépôt, ces emplacements doivent tous faire partie du même dépôt. Les dépôts Subversion ne sont pas encore capables de communiquer entre eux ; cette fonctionnalité est prévue à l'avenir [24].

Paragraphe 9

Switches and Updates

Have you noticed that the output of svn switch and svn update looks the same? The switch command is actually a superset of the update command.

When you run svn update, you're asking the repository to compare two trees. The repository does so, and then sends a description of the differences back to the client. The only difference between svn switch and svn update is that the latter command always compares two identical repository paths.

That is, if your working copy is a mirror of /calc/trunk, svn update will automatically compare your working copy of /calc/trunk to /calc/trunk in the HEAD revision. If you're switching your working copy to a branch, svn switch will compare your working copy of /calc/trunk to some other branch directory in the HEAD revision.

In other words, an update moves your working copy through time. A switch moves your working copy through time and space.

Déports et mises à jour

Avez-vous remarqué que les résultats des commandes svn switch et svn update se ressemblent ? La commande svn switch est en fait une généralisation de la commande update.

Quand vous lancez svn update, vous demandez au dépôt de comparer deux arborescences. C'est ce qu'il fait, puis il renvoie au client le détail des différences entre les deux. La seule différence entre svn switch et svn update est que cette dernière commande compare toujours deux chemins identiques du dépôt.

C'est-à-dire que si votre copie de travail pointe vers /calc/trunk, svn update comparera automatiquement votre copie de travail de /calc/trunk au /calc/trunk de la révision HEAD. Si vous faites pointer votre copie de travail vers une branche, svn switch comparera votre copie de travail de /calc/trunk au répertoire d'une autre branche de la révision HEAD.

En d'autres termes, svn update déplace votre copie de travail à travers le temps. svn switch déplace votre copie de travail à travers le temps et l'espace.

Paragraphe 10

Because svn switch is essentially a variant of svn update, it shares the same behaviors; any local modifications in your working copy are preserved when new data arrives from the repository.

Parce que svn switch est essentiellement une variante de svn update, elle se comporte de la même manière ; toute modification locale présente dans votre copie de travail est préservée lorsque de nouvelles données arrivent en provenance du dépôt.

Paragraphe 11

Have you ever found yourself making some complex edits (in your /trunk working copy) and suddenly realized, "Hey, these changes ought to be in their own branch?" A great technique to do this can be summarized in two steps:

 $ svn copy http://svn.example.com/repos/calc/trunk \
            http://svn.example.com/repos/calc/branches/newbranch \
       -m "Create branch 'newbranch'."
 Committed revision 353.
 $ svn switch http://svn.example.com/repos/calc/branches/newbranch
 At revision 353.

The svn switch command, like svn update, preserves your local edits. At this point, your working copy is now a reflection of the newly created branch, and your next svn commit invocation will send your changes there.

Vous-êtes vous déjà trouvés dans une situation où vous effectuez des modifications complexes (dans votre copie de travail de /trunk), et réalisez soudainement : "Mais, ces modifications ne devraient-elles pas être dans leur propre branche ?" Une excellente technique pour accomplir ceci peut être résumée en deux étapes :

 $ svn copy http://svn.exemple.com/depot/calc/trunk \
            http://svn.exemple.com/depot/calc/branches/nouvelle-branche \
       -m "Création de la branche 'nouvelle-branche'."
 Révision 353 propagée.
 $ svn switch http://svn.exemple.com/depot/calc/branches/nouvelle-branche
 À la révision 353.

La commande svn switch, à l'instar de svn update, préserve vos modifications locales. A présent votre copie de travail pointe vers la branche nouvellement créée, et la prochaine fois que vous lancerez svn commit vos modifications y seront envoyées.