84 votes

Comment puis-je exporter (et puis de l'importer) une Subversion repo?

Je suis à peu près enveloppé sur un projet où j'ai été en utilisant un commercial SVN fournisseur pour stocker le code source. L'hébergeur du site le client en fin de compte choisi comprend un référentiel dans le cadre de la formule d'hébergement, de sorte que, maintenant que le projet est terminé, j'aimerais déménager le dépôt de leur hébergeur et d'interrompre le compte commercial.

Comment pourrais-je aller sur le faire?

69voto

Tadmas Points 3654

Si vous souhaitez déplacer le référentiel et garder l'histoire, vous aurez probablement besoin de système de fichiers d'accès sur les deux hôtes. La solution la plus simple, si votre backend est FSFS (la valeur par défaut sur les versions récentes), est de faire une copie de système de fichiers de l'ensemble du dossier de référentiel.

Si vous avez un type de support Berkley DB, si vous n'êtes pas sûr de ce que votre backend, ou si vous comptez changer de version SVN numéros, vous allez avoir à utiliser svnadmin dump votre ancien dépôt et de le charger dans le nouveau référentiel. À l'aide de svnadmin dump vous donnera un unique fichier de sauvegarde que vous pouvez copier dans le nouveau système. Ensuite, vous pouvez créer la nouvelle (vide) dépôt et utiliser svnadmin load, essentiellement en replay tous les commits avec ses métadonnées (auteur, timestamp, etc).

Vous pouvez en savoir plus sur la sauvegarde/chargement de processus ici:

http://svnbook.red-bean.com/en/1.1/ch05s03.html#svn-ch-5-sect-3.5

Aussi, si vous n' svnadmin load, assurez-vous d'utiliser l' --force-uuid option, ou sinon les gens vont avoir des problèmes de basculer vers le nouveau référentiel. Subversion utilise un UUID pour identifier le référentiel interne, et il ne sera pas vous permettre de passer d'une copie de travail à un autre référentiel.

Si vous n'avez pas accès au système de fichiers, il peut y avoir d'autres tiers options là-bas (ou vous pouvez écrire quelque chose) pour vous aider à migrer: essentiellement, vous devez utiliser le svn log pour relire chaque révision sur le nouveau référentiel, et de corriger ensuite les métadonnées par la suite. Vous aurez besoin de la pre-revprop-change et post-revprop-change scripts de hook en place pour faire ce qui suppose l'accès au système de fichiers, donc YMMV. Ou, si vous ne souhaitez pas conserver l'historique, vous pouvez utiliser votre copie de travail à l'importation dans le nouveau référentiel. Mais j'espère que ce n'est pas le cas.

35voto

tkdave Points 796

rsvndump a très bien fonctionné pour moi, la migration d'une pension de svnrepository.com pour un serveur ubuntu que je contrôle.

Comment installer et utiliser rsvndump sur Ubuntu:

1. Installer les dépendances manquantes ("APR" et de la Subversion libs)

sudo apt-get install apache2-threaded-dev
sudo apt-get install libsvn-dev

2. Installer rsvndump

wget http://prdownloads.sourceforge.net/rsvndump/rsvndump-0.5.5.tar.gz
tar xvfz rsvndump-0.5.5.tar.gz
cd rsvndump-0.5.5
./configure
make
sudo make install

3. Vidage de la télécommande dépôt SVN dans un fichier local

rsvndump http://my.svnrepository.com/svn/old_repo > old_repo_dump

4. Créer un nouveau référentiel et de la charge locale dans le fichier de vidage

sudo svnadmin create /opt/subversion/my_new_rep
sudo svnadmin load --force-uuid /opt/subversion/my_new_repo < old_repo_dump

9voto

Sander Rijken Points 15425

Vous pouvez également utiliser svnsync. Cela nécessite seulement un accès en lecture seule sur le référentiel source

plus à svnbook

5voto

pilif Points 7172

L'outil pour le faire pourrait être

svnadmin dump

Mais pour que cela fonctionne, vous avez besoin de système de fichiers-accès au référentiel. Et une fois que vous avez (et à condition que le dépôt est FSFS format), vous pouvez simplement copier le référentiel à son nouvel emplacement (si c'est dans BDB format de sauvegarde/chargement est fortement recommandé).

Si vous n'avez pas accès au système de fichiers, vous devez demander à votre fournisseur de référentiel pour fournir de la décharge pour vous (et les faire supprimer leur référentiel et de l'espoir qu'ils se conforment)

4voto

pirho Points 1387

Vous pouvez également utiliser l' hotcopy commande:

svnadmin hotcopy OLD_REPOS_PATH NEW_REPOS_PATH

Il faut une sauvegarde complète de dépôt, y compris tous les crochets, les fichiers de configuration, etc.

Plus au SVN Livre

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