This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.
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 l'un de nos
exemples précédents, 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. À 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 :
$ cd calc $ svn info | grep URL URL: http://svn.exemple.com/depot/calc/trunk $ svn switch ^/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
« 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.
La commande svn switch accepte également
l'option --revision
(-r
), pour
que que vous ne soyez pas obligé de faire pointer votre copie de
travail vers la révision HEAD
de la
branche.
Bien sûr, beaucoup de 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 :
Copier le « tronc » entier du projet vers une nouvelle branche ;
Ne déporter qu'une partie de la copie de travail du tronc pour qu'elle pointe sur la branche.
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.
Astuce | |
---|---|
Typiquement, les sous-dossiers déportés partagent un ancêtre
commun avec l'emplacement d'où ils ont été déportés. Cependant,
svn switch peut déporter un sous-dossier pour
refléter un emplacement du dépôt qui ne partage aucun ancêtre
avec ce sous-dossier. Pour ce faire, vous devez utiliser
l'option |
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 mettez à jour, vous recevez comme il se doit les correctifs pour chaque sous-arborescence. Quand vous effectuez une propagation, vos modifications locales s'appliquent toujours au dépôt en tant qu'une unique modification atomique.
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 [43].
Astuce | |
---|---|
Les administrateurs qui doivent modifier l'URL d'un dépôt
accessible via HTTP sont
encouragés à ajouter à leur fichier de configuration
|
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.
Astuce | |
---|---|
Vous-êtes vous déjà trouvés dans une situation où vous
effectuez des modifications complexes (dans votre copie de
travail de $ 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. Désormais, 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. |
[43] Vous pouvez cependant utiliser svn relocate si l'URL de votre serveur change et si vous ne voulez pas abandonner votre copie de travail existante. Reportez-vous à svn relocate dans Guide de référence de svn : le client texte interactif pour des détails et des exemples.