svn switch — Mettre à jour la copie de travail à partir d'une nouvelle URL.
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).
--accept ARG --depth ARG --diff3-cmd CMD --force --ignore-externals --quiet (-q) --relocate --revision (-r) REV --set-depth ARG
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 | |
---|---|
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 | |
---|---|
Soyez prudent dans l'utilisation de l'option
|