J'ai un dossier «docs» dans un référentiel Subversion nommé «projet». J'en suis venu à la conclusion qu'il devrait vraiment être conservé dans un référentiel Subversion distinct nommé "project_docs".
Je voudrais déplacer le dossier "docs" ( et toutes ses révisions ) vers le référentiel "project_docs". Y a-t-il un moyen de faire cela?
la source
"C:\Program Files (x86)\VisualSVN Server\bin\svnadmin" dump c:\Repositories\MyRepository > c:\Temp\MyReository.dump
svndumpfilter a un sérieux défaut - si un fichier ou un chemin a été copié d'un chemin que vous filtrez vers celui que vous filtrez, svndumpfilter ne pourra pas remplir l'historique et le travail échouera.
Vous pouvez utiliser svndumpfilter2 si vous rencontrez ce problème.
la source
Ceci est discuté dans la documentation SVN. Consultez la section Maintenance du référentiel sur
svndumpfilter
... Elle décrit spécifiquement comment vider les projets d'un référentiel central et les déplacer dans de nouveaux référentiels séparés.la source
Je ne pense pas que vous puissiez le faire à distance (c'est-à-dire sans copie locale). Mais cela devrait fonctionner:
svn export
le dossier du serveur d'origine, puissvn add
vers votre nouveau dépôt.Comme:
Edit: D'oh, cela laisse tomber l'histoire. Utilisez
svnadmin
comme Samuel le décrit .la source
Pour référence future:
La documentation SVN rapporte clairement:
Si vous prévoyez de modifier manuellement le fichier de vidage pour supprimer un répertoire de niveau supérieur, assurez-vous que votre éditeur n'est pas configuré pour convertir automatiquement les caractères de fin de ligne au format natif (par exemple, \ r \ n en \ n), car le contenu ne sera alors pas d'accord avec les métadonnées. Cela rendra le fichier de vidage inutile.
Utilisez sed ou Vim pour remplacer le répertoire de niveau supérieur, mais ce nom de répertoire était également contenu dans un fichier de projet !!!! Cela provoque une erreur de somme de contrôle de charge SVN.
Ainsi, lorsque vous effectuez cette opération, ne faites pas de substitutions de chaîne avec sed du seul nom du chemin.
Remplacez "Node-path: old_path" par "Node-path: new_path". Voir le chapitre 5 du livre SVN «Administration du référentiel» pour plus de détails.
la source
J'ai essayé d'utiliser la réponse acceptée, mais j'avais un énorme référentiel et je voulais exporter un petit répertoire, et je ne pouvais pas me permettre de vider tout le référentiel.
Donc, je n'ai exporté que les révisions où mon répertoire a changé (cela peut ne pas fonctionner si le répertoire que vous souhaitez exporter a des références à d'autres endroits dans votre repo).
Vous devez remplacer l'URL de votre dépôt ( )
URL_to_docs
, l'emplacement dans le serveur (/svn/old_repo
) et le chemin d'accès aux documents dans le référentiel (path/to/docs
)Vous pouvez facilement modifier votre
docs_only.dump
si vous souhaitez changer l'emplacement de votre répertoire doc dans votre nouveau référentiel.la source