Nom

svn switch — Mettre à jour la copie de travail à partir d'une nouvelle URL.

Synopsis

svn switch URL[@PEGREV] [CHEMIN]
switch --relocate FROM TO [CHEMIN...]

Description

La première forme de cette sous-commande (sans l'option --relocate) actualise votre copie de travail en la faisant pointer sur une nouvelle URL — généralement une URL qui partage un ancêtre commun avec votre copie de travail, bien que cela ne soit pas obligatoire. C'est la manière de faire avec Subversion pour utiliser une nouvelle branche pour votre copie de travail. Si PEGREV est spécifié, cela indique dans quelle révision chercher pour déterminer la cible. Reportez-vous à la section intitulée « Parcours des branches » pour une description en profondeur de la gestion des branches.

Si l'option --force est utilisée, les chemins non gérés en versions de la copie de travail qui font obstacle à l'ajout, par la commande de ré-aiguillage, de chemins ayant le même nom ne font pas échouer automatiquement l'opération. Si le chemin faisant obstacle est du même type (fichier ou répertoire) que le chemin correspondant dans le dépôt, il passe sous gestion de versions mais son contenu est laissé tel quel dans la copie de travail. Cela veut dire que les enfants d'un répertoire non géré en versions peuvent également faire obstacle et se retrouver gérés en versions. Pour les fichiers, toute différence entre l'obstacle et le dépôt est gérée comme une modification locale à la copie de travail. Toutes les propriétés du dépôt sont appliquées au chemin qui fait obstacle.

Comme pour la plupart des sous-commandes, vous pouvez limiter le périmètre d'action de l'opération de ré-aiguillage à une profondeur de l'arborescence en utilisant l'option --depth. De la même manière, vous pouvez utiliser l'option --set-depth pour définir un nouveau niveau de récursion associé à la cible de ré-aiguillage. Actuellement, la profondeur de récursion d'un répertoire d'une copie de travail ne peut qu'être augmenté (aller plus profond) ; vous ne pouvez pas faire diminuer la profondeur d'un réperoire.

L'option --relocate indique à svn switch d'agir différemment : elle actualise votre copie de travail pour pointer vers le même répertoire du dépôt, mais sur une URL différente (typiquement lorsque l'administrateur a déplacé le dépôt sur un autre serveur ou à une autre URL sur le même serveur).

Noms alternatifs

sw

Modifie

Copie de travail.

Accède au dépôt

Oui.

Options

--accept ARG
--depth ARG
--diff3-cmd CMD
--force
--ignore-externals
--quiet (-q)
--relocate
--revision (-r) REV
--set-depth ARG

Exemples

Si vous pointez vers le répertoire vendors, qui a fait l'objet d'un déplacement vers le répertoire vendors-with-fix, et que vous voulez que votre copie de travail pointe vers cette nouvelle branche :

$ svn switch http://svn.red-bean.com/repos/branches/vendors-with-fix .
U  mon-projet/machin.txt
U  mon-projet/bidule.txt
U  mon-projet/truc.c
U  mon-projet/qux.c
À la révision 31.

Pour revenir sur la branche initiale, vous n'avez qu'à fournir l'emplacememnt dans le dépôt à partir duquel vous avez extrait votre copie de travail :

$ svn switch http://svn.red-bean.com/repos/trunk/vendors .
U  mon-projet/machin.txt
U  mon-projet/bidule.txt
U  mon-projet/truc.c
U  mon-projet/qux.c
À la révision 31.
[Astuce] Astuce

Vous pouvez ne ré-aiguiller qu'une partie de votre copie de travail vers une branche si vous ne voulez pas basculer l'ensemble de votre copie de travail.

Parfois, il arrive qu'un administrateur change l'emplacement (ou l'emplacement virtuel) de votre dépôt. En d'autres termes, le contenu du dépôt ne change pas mais l'URL racine du dépôt est modifiée. Par exemple, le nom de machine peut changer, le schéma de l'URL ou n'importe quelle partie de l'URL qui conduit au dépôt lui-même peut changer. Plutôt que d'extraire une copie de travail entièrement nouvelle, vous pouvez utiliser la commande svn switch pour « ré-écrire » les méta-données administrative de votre copie de travail pour prendre en compte le nouvel emplacement. Si vous passez l'option --relocate à svn switch, Subversion contacte le dépôt pour valider la demande de déplacement (il vérifie que le dépôt est bien à la nouvelle URL) puis il modifie les méta-données d'admninistration. Aucun contenu de fichier ne sera modifié par cette opération, elle ne concerne que les méta-données de la copie de travail.

$ svn checkout file:///var/svn/depot test
A  test/a
A  test/b
…

$ mv depot nouvel-emplacement
$ cd test/

$ svn update
svn: Impossible d'ouvrir une session ra_local pour l'URL
svn: Le dépôt 'file:///var/svn/depot' n'a pu être ouvert

$ svn switch --relocate file:///var/svn/depot file:///tmp/nouvel-emplacement .
$ svn update
À la révision 3.
[Avertissement] Avertissement

Soyez prudent dans l'utilisation de l'option --relocate. Si vous vous trompez dans les arguments, vous pouvez vous retrouver avec des URL sans aucun sens dans votre copie de travail qui peuvent rendre l'ensemble de votre espace de travail inutilisable et particulièrement difficile à réparer. Il est aussi important de comprendre exactement quand utiliser ou ne pas utiliser l'option --relocate. Voici une règle « au doigt mouillé » :

  • Si la copie de travail doit reflèter un nouveau répertoire à l'intérieur du dépôt, utilisez simplement svn switch.

  • Si la copie de travail reflète toujours le même répertoire du dépôt, mais c'est l'emplacement du dépôt lui-même qui a changé, utilisez svn switch avec l'option --relocate.