web-dev-qa-db-fra.com

Déplacer un référentiel Subversion vers un autre serveur

J'ai un serveur qui héberge ma base de code Subversion. Ce serveur est actuellement une boîte Windows Server 20 , et mon administrateur informatique souhaite le mettre à jour vers Windows Server 2008 .

Cela signifie que je vais devoir déplacer mon référentiel Subversion pendant que le serveur est construit et je me demandais quelles sont les meilleures pratiques pour déplacer le référentiel vers un nouveau serveur.

Il semble que, en regardant en ligne, la méthode recommandée consiste à utiliser:

svnadmin dump /path/to/repository > repository-name.dmp

Et puis utilisez:

svnadmin create repository-name
svnadmin load repository-name< repository-name.dmp

Pour importer le référentiel.

La méthode ci-dessus semble-t-elle être la meilleure approche?

66
Ryan Smith

Oui, le vidage et le chargement du référentiel est une solution. La copie directe du dossier du référentiel est une option viable si, et seulement si, vous êtes certain que personne n'accédera au référentiel pendant le processus de copie (ou vous pouvez faire une "copie à chaud" du référentiel, qui peut gérer ces cas en toute sécurité).

Vous devrez également relancer toutes vos copies de travail ou utiliser la commande svn switch, qui réécrit simplement les URL. Un moyen plus pratique consiste à utiliser la commande Relocate de TortoiseSVN, ce qui réduit le risque de faire une erreur pendant le processus de relocalisation.

58
petr k.

Mes scripts de restauration sont comme ceci:

svnadmin create repository-name --fs-type fsfs
svnadmin load   repository-name --force-uuid < repository-name.dmp

La première ligne garantit que le référentiel utilise le backend FSFS (ce qui est recommandé par de nombreuses sources, dont celle-ci: How FSFS is Better , et les nouvelles versions AFAIK de Subversion l'utilisent par défaut) . FSFS est le nom d'une implémentation du système de fichiers Subversion.

La deuxième ligne conserve l'UUID du référentiel, pour une transition plus facile (sans --force-uuid switch, la relocalisation de la copie de travail échouera).

Quelques liens:

27
alexandrul

Vous pouvez également utiliser svnsync pour déplacer le référentiel; de cette façon, vous pouvez transférer toutes les données sans avoir à supprimer l'ancien "référentiel". C'est aussi le seul moyen que je connaisse pour obtenir vos données à partir d'environnements hébergés, où vous n'avez pas accès à Shell ou accès au vidage du référentiel.

9
Sander Rijken

Une autre alternative:

utilisez svnrdump. http://www.crowbarsolutions.com/backing-up-restoring-a-remote-svn-repository/

"Vous allez avoir besoin d'un outil appelé svnrdump. Comme décrit par Apache," svnrdump réplique les fonctionnalités de svnadmin dump et svnadmin load, mais fonctionne sur des référentiels distants, au lieu d'avoir besoin d'un accès administrateur (système de fichiers local) au référentiel source ou cible . "

5
JRun

Si vous utilisez le référentiel de type Système de fichiers, vous pouvez simplement prendre le dossier contenant votre référentiel et le déplacer. Si vous changez de serveur, il est probable que vous devrez changer l'emplacement dans lequel votre répertoire de travail local recherche le référentiel en utilisant la commande "Relocaliser".

4
NerdFury

La façon la plus simple est d'utiliser:

svnadmin hotcopy path/to/your_current_directory /path/to/your_destination_directory
1
orezvani