2009-05-07 7 views
2

J'ai un ancien référentiel Subversion mais très important pour lequel je n'ai pas créé à partir du début la structure habituelle: tronc, branches, balises. Donc, tous mes fichiers pour ce dépôt résident dans la racine.Mise à jour du référentiel Subversion avec historique

Je sais comment créer les nouveaux dossiers et déplacer tous mes dossiers dans le tronc mais si je fais cela je perdrai l'histoire de mon projet pendant 3 années, puisque «tronc» est un nouveau dossier. Alors, y a-t-il une solution pour déplacer l'historique de mon projet entier de la racine vers le dossier du tronc?

Merci!

Répondre

3

Oui. Vous pouvez utiliser svnadmin dump qui videra le dépôt avec l'historique dans un fichier. Vous pouvez ensuite utiliser svnadmin load pour charger le fichier de vidage dans le dossier de ligne réseau. Une fois cela fait, supprimez les fichiers de la racine.

svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental] 
svnadmin load REPOS_PATH 

Dump Doc: http://svnbook.red-bean.com/en/1.1/re31.html Charge Doc: http://svnbook.red-bean.com/en/1.0/re36.html

+1

Si vous ajoutez "tronc -parent-dir" pour le charger svnadmin se déplace tous les fichiers dans le subsdirectory tronc du dépôt –

0

Pas une solution idéale certes, mais pourquoi ne pas créer un nouveau référentiel dont le contenu est tout le code de l'ancien référentiel mais bien formaté en tronc etc ... garder l'ancien référentiel complètement séparé mais en le faisant uniquement lire. Ce serait certes une douleur d'avoir à se rappeler qu'avant la date X vous devez regarder dans l'ancien référentiel plutôt que le nouveau si vous avez besoin de connaître l'histoire d'un article.

2

Vous pouvez utiliser

svn copy http://my.server/svn/repos/ http://my.server/svn/repos/trunk/ \ 
    -m "Copied" 

Pour créer une copie de votre racine du référentiel (^ /) de trunk/(^/tronc) , en gardant tout votre historique, y compris celui du répertoire racine. Après cela, vous pouvez supprimer les fichiers et sous-répertoires dans l'ancien emplacement dans la prochaine validation.

+0

Pourquoi ne pas simplement svn mv my.server/svn/repo/my.server/svn/repos/trunk/-m "Déplacé" – Stefan

+1

@Stefan: Vous ne pouvez pas déplacer le répertoire parent (= la racine du référentiel) vers un sous-répertoire de lui-même car cela vous donnerait une erreur. –

1

Vous ne perdrez pas d'historique si vous utilisez svn mv les fichiers. L'histoire sera maintenue. Vous pouvez donc utiliser la jonction svnadmin load -parent-dir pour refaire votre dépôt, mais vous devrez effectuer de nouvelles vérifications, car vous devriez avoir un nouvel UUID dans le nouveau dépôt.

svn co http://example.com/repos/ 
cd repos 
svn mkdir trunk tags branches 
svn mv a trunk/a 
svn mv b trunk/b 
svn ci -m 'Moving project into trunk' 
Questions connexes