web-dev-qa-db-fra.com

Comment déplacer un référentiel SVN vers un nouveau serveur

Nous aimerions fusionner deux de nos serveurs ensemble et pour ce faire, nous aurions besoin d'installer SVN sur le "nouveau" serveur, puis de déplacer tous nos référentiels que nous avons mis en place sur notre "ancien" serveur.

Est-ce une opération facile à faire? Vous utilisez peut-être l'option "Relocaliser" fournie par TortoiseSVN? Quelle est la meilleure façon de procéder?

Serait-ce le bon moment pour réorganiser la configuration du référentiel?

34
Joe Phillips

Vous pouvez migrer un référentiel en utilisant le svnadmin dump une fonction. Sur le serveur SVN, tapez svnadmin dump /absolute/path/to/the/repo > /tmp/repo.svndump. Cela exportera l'intégralité du référentiel vers un fichier texte dans le répertoire temporaire du système et le nommera "repo.svndump". Vous souhaiterez peut-être compresser ce fichier avant de le transférer sur le nouveau serveur.

Une fois le dépôt exporté, vous pouvez ensuite transférer le fichier de vidage vers le nouveau serveur et l'importer comme suit: svnadmin load /absolute/path/to/the/**new**/repo < repo.svndump.

Voir ' svnadmin dump ' et ' svnadmin load ' pour plus d'informations.

Après avoir vidé le référentiel et l'avoir chargé sur le nouveau serveur, vous utiliseriez le --relocate commande pour basculer votre copie locale vers le nouveau serveur.

Attention: Si vos référentiels utilisent n'importe quel externals alors vous aurez quelques problèmes. Voir ma question sur Server Fault pour plus de détails à ce sujet.

60
James Sumners

Si le nouveau serveur utilise le même système d'exploitation, vous pouvez simplement copier l'intégralité du dossier du référentiel sur le nouveau serveur. Pas besoin de le vider et de le recharger.

La commande relocaliser vous permet de pointer votre copie de travail vers le nouveau serveur, c'est-à-dire qu'elle ne vous aide pas à déplacer le référentiel, elle vous évite simplement d'effectuer une nouvelle extraction.

Les externes peuvent être un problème mais ne doivent pas l'être. Si le référentiel externe était sur le même serveur, vous avez probablement spécifié l'externe avec une URL relative. Si le nouveau serveur utilise la même structure, tout devrait fonctionner correctement.

3
Stefan Egli

CLONE-SVN2SVN

Si svnadmin dump n'est pas une option, vous pouvez utiliser le script bash clone-svn2svn . Il copie un répertoire SVN vers un autre site SVN avec l'historique des révisions concurrentes ou partielles. Voici les principaux paramètres de ligne de commande. Vous pouvez également définir la révision à partir de laquelle vous souhaitez que le clone commence à copier l'historique.

clone-svn2svn.sh <source-svn-url> <destination-svn-url>

Exigences

Bash et git sont requis pour que le script fonctionne. Si vous utilisez Windows ou une autre plate-forme, téléchargez-les depuis site Web git-scm . Il s'agit d'un programme d'installation git avec bash inclus.

Détails

Le script télécharge l'historique SVN source dans un référentiel git temporaire en utilisant git-svn et télécharge l'historique vers le référentiel SVN cible.

Lacunes

L'auteur des révisions du référentiel cible sera l'utilisateur exécutant le script (vous-même). Cependant, chaque message de révision aura une ligne supplémentaire spécifiant l'auteur d'origine. Ce n'est donc pas trop mal.

1
evpo

Serait-ce le bon moment pour réorganiser la mise en place du repo?

C'est le moment idéal pour le faire, car vous devrez de toute façon supprimer votre référentiel pendant que vous le migrez vers le nouveau serveur.

0
Bernard