34 votes

Renommer le nom du projet du dépôt SVN

J'ai migré un projet de CVS à SVN. J'ai maintenant besoin de renommer ce projet. Quelle est la meilleure façon de le renommer en conservant l'historique intact ? Le dossier du projet contient une centaine de fichiers C et ses fichiers d'en-tête.

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".

45voto

Diego Lago Points 340

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

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

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

6 votes

Vous n'avez pas besoin de générer un nouvel UUID tant que vous déplacez (et non copiez) le dépôt d'origine.

2 votes

Y a-t-il une preuve de cela ? Je ne veux pas prendre le risque de le faire et d'endommager mon repo.

2 votes

@guerda J'ai travaillé avec ce repo déplacé pendant un an sans aucun problème, mais maintenant je ne travaille plus dans la même entreprise. Vous savez, faites une sauvegarde avant tout changement important de vos données ;)

21voto

Miky Dinescu Points 22380

La réponse originale (qui a été acceptée) était pertinente au moment où la question a été posée, pour les questions originales (qui ont également été modifiées depuis).

Les choses ont changé et comme d'autres l'ont souligné dans ce fil de discussion, il existe maintenant de meilleures façons de renommer les dépôts et/ou les projets à l'intérieur d'un dépôt.

Je vais convertir cette réponse en un wiki communautaire et laisser d'autres personnes en assurer la maintenance pour qu'elle reste pertinente.

0 votes

En fait, j'ai un référentiel. Celui-ci contient plusieurs projets. Parmi ces projets, j'ai besoin de renommer un projet et non pas tout le référentiel. Existe-t-il un moyen de le faire ?

46 votes

@Minky : Votre blog est-il une blague du 1er avril ? Pour renommer un dépôt, il suffit de renommer le répertoire où se trouve votre dépôt : par exemple, si votre dépôt se trouve dans /opt/svn/mon_ancien_nom, il suffit d'appliquer : mv /opt/svn/mon_ancien_nom /opt/svn/nouveau_nom Pas besoin de dump/reload !

1 votes

N'oubliez pas de copier vos paramètres d'authentification à l'aide de la fonction cp -r old_repo_directory/conf new_repo_directory

19voto

splash Points 8499

Livre SVN \ 5. Administration du référentiel \ Déplacer et supprimer des référentiels :

Les données du référentiel Subversion sont entièrement contenues dans le référentiel. . 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, etc. emplacement sur le disque, renommer un référentiel, copier un référentiel, ou supprimer un référentiel en utilisant les outils fournis par votre système d'exploitation pour manipuler les répertoires. système d'exploitation pour manipuler les répertoires

Le renommage se fait généralement sur le même serveur, donc un simple renommage/déplacement du répertoire de dépôt suffira. L'appel de svnadmin setuuid est pas nécessaire, parce que vous ne faites pas de copie et que les UUID doivent rester les mêmes, afin que votre client puisse facilement se déplacer vers la nouvelle URL du dépôt.

2voto

Cees Timmerman Points 1739

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

Bons détails, explications et histoire. Des informations très utiles. Même si elle ne répond pas directement au PO.

0voto

Aravindh Gopi Points 754
  1. Il faut d'abord savoir où se trouve le \Repositories dossier résidant à, (defaut C:\Repositories )

  2. Après cela, renommez votre dépôt comme vous le souhaitez, à l'intérieur de cela /Repositories dossier. (Windows)

  3. Si vous utilisez eclipse, supprimez l'ancien emplacement du dépôt dans SVN Repositories et allez à New->Repository Location...-> your new repository name . C'est tout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X