SVN 1.1 (ancien livre) :
Parfois, un administrateur peut changer l'"emplacement de base" de votre référentiel - en d'autres termes, le contenu du référentiel ne change pas, mais l'URL principale utilisée pour atteindre la racine du référentiel change. Par exemple, le nom d'hôte peut changer, le schéma d'URL, ou toute partie de l'URL qui mène au référentiel lui-même. Plutôt que d'extraire une nouvelle copie de travail, vous pouvez faire en sorte que la commande svn switch "réécrive" les débuts de toutes les URLs dans votre copie de travail. Utilisez l'option --relocate pour effectuer la substitution. Le contenu des fichiers n'est pas modifié, et le dépôt n'est pas contacté. C'est similaire à l'exécution d'un script Perl sur votre copie de travail des répertoires .svn/ qui s'exécute s/OldRoot/NewRoot/.
$ svn checkout file:///tmp/repos test
A test/a
A test/b
…
$ mv repos newlocation
$ cd test/
$ svn update
svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///tmp/repos'
$ svn switch --relocate file:///tmp/repos file:///tmp/newlocation .
$ svn update
At revision 3.
SVN 1.7 (livre actuel) :
svn relocate - Relocalise la copie de travail pour pointer vers une URL racine de dépôt différente.
Synopsis
svn relocate FROM-PREFIX TO-PREFIX [PATH...]
svn relocate TO-URL [PATH]
Description
Parfois, un administrateur peut changer l'emplacement (ou l'emplacement apparent, du point de vue du client) d'un référentiel. Le contenu du référentiel ne change pas, mais l'URL racine du référentiel change. Le nom d'hôte peut changer parce que le référentiel est maintenant servi depuis un ordinateur différent. Ou peut-être que le schéma d'URL change parce que le référentiel est maintenant servi via SSL (en utilisant https://) au lieu d'un simple HTTP. Il existe de nombreuses raisons différentes pour ces types de relocalisation de référentiel. Mais idéalement, un "changement d'adresse" pour un dépôt ne devrait pas soudainement causer toutes les copies de travail qui pointent vers ce dépôt à devenir définitivement inutilisables. Heureusement, ce n'est pas le cas. Plutôt que de forcer les utilisateurs à extraire une nouvelle copie de travail quand un dépôt est déplacé, Subversion fournit la commande svn relocate, qui "réécrit" les métadonnées administratives de la copie de travail pour faire référence au nouvel emplacement du dépôt.
La première syntaxe svn relocate vous permet de mettre à jour une ou plusieurs copies de travail par ce qui équivaut essentiellement à une recherche et un remplacement dans le référentiel des URL de racine enregistrées dans ces copies de travail. Subversion remplacera la sous-chaîne initiale FROM-PREFIX par la chaîne TO-PREFIX dans ces URLs. Ces sous-chaînes initiales d'URL peuvent être aussi longues ou aussi courtes que nécessaire pour les différencier. Évidemment, pour utiliser cette forme de syntaxe, vous devez connaître à la fois l'URL racine actuelle du dépôt vers lequel la copie de travail pointe, et la nouvelle URL de ce dépôt. (Vous pouvez utiliser svn info pour déterminer la première).
La seconde syntaxe ne nécessite pas que vous connaissiez l'URL racine du référentiel actuel avec lequel la copie de travail est associée, mais seulement la nouvelle URL du référentiel (TO-URL) vers laquelle elle doit pointer. Dans cette forme de syntaxe, une seule copie de travail peut être relocalisée à la fois.
Exemples
Commençons par une copie de travail qui reflète une URL de dépôt local :
$ svn info | grep URL:
URL: file:///var/svn/repos/trunk
$
Un jour, l'administrateur décide de renommer le répertoire du référentiel sur disque. Nous avons manqué le mémo, et une erreur s'est produite la prochaine fois que nous avons essayé de mettre à jour notre copie de travail.
$ svn up
Updating '.':
svn: E180001: Unable to connect to a repository at URL 'file:///var/svn/repos/trunk'
Après avoir coincé l'administrateur près des distributeurs automatiques, nous apprenons que le dépôt a été déplacé et on nous indique la nouvelle URL. Plutôt que d'extraire une nouvelle copie de travail, cependant, nous demandons simplement à Subversion de réécrire les métadonnées de la copie de travail pour pointer vers le nouvel emplacement du dépôt.
$ svn relocate file:///var/svn/new-repos/trunk
$
La subversion ne nous dit pas grand chose sur ce qu'il a fait, mais un fonctionnement sans erreur est vraiment tout ce dont nous avons besoin, non ? Notre copie de travail est à nouveau fonctionnelle pour les opérations en ligne.
$ svn up
Updating '.':
A lib/new.c
M src/code.h
M src/headers.h
…
Par défaut, svn relocaliser traversera toutes les copies de travail externes imbriquées dans votre copie de travail et tentera de relocaliser ces copies de travail, également. Utilisez l'option --ignore-externals
pour désactiver ce comportement.
0 votes
Si vous utilisez Serveur VisualSVN vous pouvez simplement cliquer avec le bouton droit de la souris sur un référentiel dans le gestionnaire de serveur VisualSVN et sélectionner "Renommer".