web-dev-qa-db-fra.com

Renommer le nom du projet de référentiel SVN

J'ai migré un projet de CVS vers SVN. Maintenant, je dois renommer ce projet. Quel peut être le meilleur moyen de le renommer, en gardant toute l'histoire intacte Le dossier de projet contient environ 100 numéros de C et ses fichiers d’en-tête.

32
thetna

Il n'y a pas de mécanisme intégré dans Subversion pour renommer un référentiel. 

La meilleure option pour préserver l’intégrité et l’historique consiste à effectuer une sauvegarde du référentiel de l’ancien référentiel, puis à la réimporter dans un nouveau référentiel.

J'ai écrit un article à ce sujet ici: Comment renommer un référentiel SVN .

Vous aurez seulement besoin d'utiliser l'utilitaire svnadmin, puis svnadmin créer un nouveau référentiel, svnadmin dump le contenu du référentiel précédent et enfin svnadmin importer le dump dans le répertoire nouveau référentiel que vous avez créé avec svnadmin create.

MODIFIER

Si vous devez renommer un "projet" dans le référentiel - et par projet, je suppose que vous entendez un répertoire - vous devez simplement utiliser la commande svn move . Notez que ceci est fait en utilisant le client svn, pas svnadmin. La syntaxe de la commande svn move est svn move SRC DEST et vous permet de pré-modifier fondamentalement le renommage d'un fichier ou d'un répertoire à l'intérieur de votre référentiel. Tout l'historique doit être préservé pour ce fichier (ou répertoire).

21
Mike Dinescu

Pour renommer un référentiel, il vous suffit de renommer son répertoire racine et de générer un nouvel UUID. En supposant que le référentiel se trouve dans /var/svnroot/my_repo, vous devez exécuter cette commande (en tant que root) pour renommer un référentiel:

$ mv /var/svnroot/my_repo /var/svnroot/my_new_repo
$ svnadmin setuuid /var/svnroot/my_new_repo

Après cela, vous pourrez y accéder via votre protocole préféré.

43
Diego Lago

Livre SVN \ 5. Administration du référentiel \ Déplacement et suppression de référentiels :

Les données du référentiel Subversion sont entièrement contenues dans le référentiel annuaire. En tant que tel, vous pouvez déplacer un référentiel Subversion vers un autre emplacement sur le disque, renommer un référentiel, copier un référentiel ou supprimer un fichier référentiel tout à fait en utilisant les outils fournis par votre exploitation système de manipulation de répertoires

Renommer est généralement effectué sur le même serveur, un simple changement de nom/déplacement du répertoire du référentiel le fera. L'appel de svnadmin setuuid est nécessaire pour pas, car vous ne faites pas de copie et les UUID doivent rester inchangés afin que votre client puisse facilement se déplacer vers la nouvelle URL du référentiel.

18
splash

SVN 1.1 (vieux 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 le fait. Par exemple, le nom d'hôte peut changer, le schéma d'URL ou toute partie de l'URL menant au référentiel lui-même. Plutôt que d'extraire une nouvelle copie de travail, vous pouvez demander à la commande svn switch de «réécrire» le début de toutes les URL de votre copie de travail. Utilisez l'option --relocate pour effectuer la substitution. Aucun contenu de fichier n'est modifié et le référentiel n'est pas contacté. Cela ressemble à l'exécution d'un script Perl sur votre répertoire de travail .svn/qui 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 - Déplacez la copie de travail pour qu'elle pointe vers une autre URL racine du référentiel.

Synopsis

svn relocate FROM-PREFIX TO-PREFIX [PATH...]

svn relocate TO-URL [PATH]

La 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, contrairement à l'URL racine du référentiel. Le nom d'hôte peut changer car le référentiel est maintenant servi à partir d'un autre ordinateur. Ou bien, le schéma d'URL change peut-être car le référentiel est maintenant servi via SSL (à l'aide de https: //) au lieu d'un protocole HTTP simple. Il existe de nombreuses raisons différentes pour ces types de relocalisation de référentiel. Mais dans l’idéal, un «changement d’adresse» pour un référentiel ne devrait pas provoquer soudainement que toutes les copies de travail pointant vers ce référentiel soient inutilisables pour toujours. Et heureusement, ce n'est pas le cas. Plutôt que d'obliger les utilisateurs à extraire une nouvelle copie de travail lorsqu'un référentiel 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 référentiel.

La première syntaxe svn relocate vous permet de mettre à jour une ou plusieurs copies de travail selon ce qui revient essentiellement à rechercher et remplacer à la racine du référentiel des URL enregistrées dans ces copies de travail. Subversion remplacera la sous-chaîne initiale FROM-PREFIX par la chaîne TO-PREFIX dans ces URL. Ces sous-chaînes d'URL initiales peuvent être aussi longues ou aussi courtes que nécessaire pour les différencier. Évidemment, pour utiliser ce formulaire de syntaxe, vous devez connaître à la fois l'URL racine actuelle du référentiel vers lequel la copie de travail pointe et la nouvelle URL de ce référentiel. (Vous pouvez utiliser svn info pour déterminer l'ancien.)

La deuxième syntaxe ne nécessite pas que vous connaissiez l'URL racine du référentiel actuel à laquelle la copie de travail est associée, mais uniquement la nouvelle URL du référentiel (TO-URL) vers laquelle elle devrait être pointée. Dans cette forme de syntaxe, une seule copie de travail peut être déplacée à la fois.

Exemples

Commençons par une copie de travail qui reflète l’URL d’un référentiel 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 nous voyons donc une erreur la prochaine fois que nous essayons 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 acculé l'administrateur par les distributeurs automatiques, nous apprenons que le référentiel a été déplacé et la nouvelle adresse est indiquée. Plutôt que d'extraire une nouvelle copie de travail, nous demandons simplement à Subversion de réécrire les métadonnées de la copie de travail pour qu'elles pointent vers le nouvel emplacement du référentiel.

$ svn relocate file:///var/svn/new-repos/trunk
$

Subversion ne nous dit pas grand-chose de ce qu’elle a fait, mais bon: un fonctionnement sans erreur est 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 relocate traversera toutes les copies de travail externes imbriquées dans votre copie de travail et tentera également de les déplacer. Utilisez l'option --ignore-externals pour désactiver ce comportement.

2
Cees Timmerman
  1. Commencez par savoir où se trouve le dossier \Repositories situé (defaut C:\Repositories).

  2. Ensuite, renommez le référentiel souhaité dans le dossier /Repositories. (les fenêtres)

  3. Si vous utilisez Eclipse, supprimez l'ancien emplacement du référentiel dans les référentiels SVN et passez à New->Repository Location...-> your new repository name. C'est tout.

0
Aravindh Gopi