Renommer SVN repository nom du projet
j'ai migré un projet de CVS vers SVN. Maintenant j'ai besoin de changer le nom de ce projet. Ce qui peut être la meilleure façon possible de le renommer, en gardant toute l'histoire intacte. Le dossier de projet contient environ 100 nombres de C et ses fichiers d'en-tête.
5 réponses
Il n'y a pas de intégré mécanisme dans Subversion pour renommer un dépôt.
La meilleure option pour maintenir l'intégrité et l'histoire est d'effectuer un dump de dépôt de l'ancien dépôt, puis de réimporter le dump dans un nouveau dépôt.
j'ai écrit un post à ce sujet ici: Comment renommer un dépôt SVN.
Vous aurez seulement besoin d'utiliser le svnadmin utilitaire, puis sur svnadmin créer un nouveau référentiel, svnadmin dump le contenu du référentiel précédent et enfin svnadmin import le dump dans le nouveau dépôt que vous avez créé en utilisant svnadmin create.
EDIT
Si vous avez besoin de renommer un "projet" à l'intérieur du dépôt, et du projet, je suppose que vous voulez dire un annuaire, alors il suffit d'utiliser la svn move de la commande. Notez que c'est fait en utilisant le client svn, pas svnadmin. svn move commande la syntaxe svn move SRC DEST
et il vous permet essentiellement de préformer un renommage d'un fichier ou d'un répertoire à l'intérieur de votre dépôt. Toute l'histoire doit être conservée pour ce fichier (ou répertoire).
pour renommer un référentiel, il suffit de renommer le répertoire racine et de générer un nouvel UUID. En supposant que le dépôt est /var/svnroot/my_repo
vous devez exécuter cette commande (en 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 pouvez y accéder par votre protocole préféré.
SVN Book \ 5. Administration Du Dépôt--4 -- > déplacement et suppression des dépôts:
Les données du dépôt Subversion sont entièrement contenues dans le dépôt répertoire. En tant que tel, Vous pouvez déplacer un dépôt Subversion vers un autre l'emplacement sur le disque, renommer un référentiel, copie d'un dépôt, ou supprimer un référentiel complètement en utilisant les outils fournis par votre exploitation système de manipulation des répertoires
Renommer typique est fait sur le même serveur, donc un simple renommage/déplacement du répertoire référentiel de le faire. L'appel de svnadmin setuuid
nécessaire, car vous ne faites pas de copie et les UUIDs devraient rester les mêmes, de sorte que votre client puisse facilement se déplacer vers la nouvelle URL du dépôt.
parfois un administrateur peut changer "l'emplacement de base" de votre dépôt-en d'autres termes, le contenu du dépôt ne change pas, mais L'URL principale utilisée pour atteindre la racine du dépôt le fait. Par exemple, le nom d'hôte peut changer, le schéma D'URL, ou n'importe quelle partie de L'URL qui mène au dépôt lui-même. Plutôt que de consulter une nouvelle copie de travail, vous pouvez utiliser la commande svn switch "rewrite" les débuts de toutes les Url dans votre copie de travail. Utilisez l'option -- relocate pour effectuer la substitution. Aucun contenu du fichier est modifié, ni le référentiel contacté. C'est comme exécuter un script Perl sur votre copie de travail .svn / directories 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 relocate-relocalise la copie de travail vers une racine de dépôt différente URL.
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 dépôt. Le contenu du dépôt ne change pas, mais L'URL racine du dépôt change. Le nom d'hôte peut changer parce que le dépôt est maintenant servi à partir d'un ordinateur différent. Ou, peut-être le schéma D'URL changements parce que le dépôt est maintenant servi via SSL (en utilisant https://) au lieu de via un HTTP simple. Il y a de nombreuses raisons différentes pour ces types de transferts de dépôts. Mais idéalement, un "changement d'adresse" pour un dépôt ne devrait pas soudainement rendre toutes les copies de travail qui pointent vers ce dépôt inutilisables pour toujours. Et heureusement, ce n'est pas le cas. Plutôt que de forcer les utilisateurs à consulter une nouvelle copie de travail lorsqu'un dépôt est déplacé, Subversion fournit le svn la commande 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 à un find-and-replace dans les URL racine du dépôt enregistrées dans ces copies de travail. Subversion remplacera la chaîne initiale à partir du préfixe-par la chaîne de caractères au préfixe-dans ces URLs. Ces substrats D'URL initiaux peuvent être aussi longs ou aussi courts qu'est 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 l'ancienne.)
la seconde syntaxe n'exige pas que vous connaissiez l'URL racine courante du dépôt à laquelle la copie de travail est associée-seulement la nouvelle URL du dépôt (to-URL) à laquelle elle devrait pointer. Dans cette forme de syntaxe, une seule copie de travail peut être déplacé à la fois.
Exemples
commençons par une copie de travail qui reflète L'URL d'un dépôt local:
$ svn info | grep URL:
URL: file:///var/svn/repos/trunk
$
Un jour, l'administrateur décide de renommer le disque répertoire de dépôt. Nous avons manqué le mémo, donc nous voyons 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 machines distributrices, nous apprenons à propos du dépôt être déplacé et sont informés de la nouvelle URL. Plutôt que de consulter une nouvelle copie de travail, nous demandons simplement à Subversion de réécrire les métadonnées de la copie de travail pour pointer vers la nouvelle localisation du dépôt.
$ svn relocate file:///var/svn/new-repos/trunk
$
Subversion ne nous dit pas grand chose sur ce qu'il a fait, mais l'opération sans erreur est vraiment tout ce dont nous avons besoin, non? Notre copie de travail est de 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 déménager traversera tout travail extérieur copies imbriquées dans votre copie de travail et tenter de relocaliser ces copies de travail, aussi. Utilisez le --ignore-externals
option pour désactiver ce comportement.
tout d'abord, apprenez à savoir où le
\Repositories
dossier résidant à, (defautC:\Repositories
)Après que renommer votre dépôt vous voulez, à l'intérieur de
/Repositories
dossier. (windows)si vous utilisez eclipse, supprimez L'ancien emplacement du dépôt dans SVN Repositories et goto
New->Repository Location...-> your new repository name
. Thats it.