2011-03-03 5 views
0

J'essaie de fusionner plusieurs référentiels source ensemble, en conservant l'historique des versions au cours du processus. J'ai beaucoup lu sur le processus svnadmin dump/load, mais il me manque encore un élément.Fusionner plusieurs référentiels SVN avec une torsion

Chaque référentiel source est configuré avec votre configuration standard "trunk" et "branches". C'est tout bon. Le problème est que je veux masser les chemins quand je fusionne les choses ensemble. Par exemple ...

La plupart des approches que je l'ai vu vous permettrait de créer une structure de cette celle-ci:

/project1 
/project1/trunk 
/project1/trunk/html 
/project1/branches 
/project2 
/project2/trunk 
/project2/trunk/html 
/project2/branches 

Cependant, je veux notre structure finale soit comme ceci:

/trunk 
/trunk/project1 
/trunk/project1/html 
/trunk/project2 
/trunk/project2/html 
/branches 

Raison étant: Tous les projets sont étroitement liés. Project1 pourrait être notre logiciel principal, project2 notre logiciel frontal, project3 nos travaux cron, etc. En fait, c'est un système combiné, et les branchements spécifiques au projet semblent simplement rendre notre vie plus difficile. Cela dit, le problème se pose avec la façon dont je traduis l'ancienne structure de répertoires vers la nouvelle. Pensées?

Répondre

2

Il peut être nécessaire de fusionner les référentiels en l'état, avec une branche distincte, puis de déplacer les éléments dans le nouveau référentiel fusionné afin que la dernière révision contienne les fichiers où vous le souhaitez. C'est moins de travail que d'essayer d'éditer l'historique et vous préservez toujours votre historique, même si vous devrez peut-être activer l'affichage de l'historique après la copie. Vous obtenez alors votre structure préférée pour les nouvelles révisions, même si vérifier les anciennes révisions met les choses au mauvais endroit.

2

La façon dont je le ferais est de préparer la "nouvelle" structure à l'avance avec les commandes normales svn move et svn copy et de faire ensuite la & dump de chargement. Essayer de masser le fichier de vidage avec svndumpfilter dans un format adapté à votre nouveau référentiel est compliqué et sujet aux erreurs.

+0

Pouvez-vous expliquer ce que vous voulez dire un peu plus. Pas sûr d'attraper ta dérive. – BBonifield

+0

Je l'ai compris. Votre mention de 'svn move' m'a fait réfléchir. Pourquoi ne pas simplement importer tout cela avec 'svnadmin load --parent-dir trunk/project1 test_repo BBonifield

+0

@BBonifield vous pouvez en effet faire le réarrangement avant ou après le vidage/restauration. –