Existe-t-il un moyen simple de copier un répertoire d'un référentiel dans un autre référentiel en copiant tout l'historique ?
Réponses
Trop de publicités?La méthode la plus simple consiste à utiliser :
svnadmin dump path/to/repos > repos.out
Cela créera un format portable pour votre dépôt (avec l'historique) dans le fichier repos.out
. Vous pouvez alors utiliser
svnadmin load path/to/newrepos < repos.out
pour charger votre dépôt "vidangé" vers le nouveau ou l'existant.
Chapitre 5. Maintenance du référentiel -> Migration des données du référentiel vers un autre endroit a cette note sur l'utilisation de svnadmin dump
à partir de la version 1.7 :
Le format de vidage de référentiel Subversion décrit les changements de référentiel versionné uniquement. uniquement. Il ne contient pas d'informations sur les transactions non engagées. non validées, les verrous utilisateur sur les chemins du système de fichiers, les personnalisations de la serveur (y compris les hook scripts), et ainsi de suite.
Comme le suggère le Livre sur la subversion :
svnadmin dump path/to/repos_src \
| svndumpfilter include path/inside/svn/to/directory \
| svnadmin load path/to/repos_dst
Avec un exemple :
svnadmin dump /var/lib/svn/old_repo \
| svndumpfilter include trunk/my_project/common_dir \
| svnadmin load /var/lib/svn/new_repo
Si vous ne voulez pas d'historique, vous pouvez utiliser svn export
pour obtenir un dossier propre sans les .svn
et ensuite svn import
dans votre autre dépôt.
Avec l'historique, vous devez utiliser la fonction svnadmin dump
. Vous utiliserez alors svndumpfilter
pour filtrer uniquement les parties ou les chemins que vous souhaitez utiliser avant d'utiliser la fonction svnadmin load
.
Sujets à lire :
Utilisez le svnsync
- Mise en miroir du référentiel de Subversion commandement :
svnsync
est l'outil de mise en miroir des dépôts distants de Subversion. En termes simples, il vous permet de rejouer les révisions d'un dépôt dans un autre.
La documentation de Subversion pour le svnsync
a l'avertissement suivant (à partir de la version 1.7) qui implique qu'une fois que certaines autres commandes SVN sont utilisées pour modifier un dépôt miroir, svnsync
ne doit plus être utilisé avec ce miroir particulier :
svnsync
est très sensible aux changements effectués dans le référentiel miroir qui n'ont pas été faites dans le cadre d'une opération de mise en miroir. Pour éviter cela de se produire, il est préférable que lesvnsync
est le seul processus autorisé à modifier le référentiel miroir.
Vous pouvez vérifier ces questions
- Comment déplacer un seul dossier d'un référentiel Subversion vers un autre référentiel ?
- Exportation d'un seul projet depuis le dépôt SVN
- est-il possible de migrer un seul composant d'un dépôt svn à un autre tout en préservant l'historique ?
- Comment vider un projet d'un dépôt SVN qui contient plusieurs projets ?
- Comment extraire un sous-arbre de mon dépôt svn dans un nouveau dépôt ?