La solution d'Avi est probablement la plus simple, mais présente l'inconvénient que le nouveau référentiel contiendra l'historique complet de tous les éléments en dehors de ce projet. Dans l'exemple ci-dessous, je suppose que vous êtes sur la ligne de commande d'une machine * NIX et que vous vous trouvez dans un répertoire contenant votre référentiel existant.
svnadmin create new-project-repo # create new repo next to old repo
svnadmin dump old-project-repo | svnadmin load new-project-repo
svn mv file://$PWD/new-project-repo/my-project/trunk file://$PWD/new-project-repo/trunk
svn mv file://$PWD/new-project-repo/my-project/branches file://$PWD/new-project-repo/branches
svn mv file://$PWD/new-project-repo/my-project/tags file://$PWD/new-project-repo/tags
# ... svn rm file://$PWD/new-project-repo/XXX for all the cruft still at the top level.
Si vous exécutez subversion 1.6.x, svnsync fournit une meilleure option. Avant 1.6.x, svnsync ne pouvait être utilisé que pour copier des dépôts entiers. Avec 1.6.x il a gagné la capacité de copier seulement un sous-arbre donné du dépôt.
svnadmin create new-project-repo
# svnsync needs the ability to set revision properties, so we must install a pre-revprop-change
# hook script which just exits with status 0 (no error). On *NIX systems, the program `true` will do this.
ln -s /usr/bin/true new-project-repo/hooks/pre-revprop-change # possibly /bin/true
svnsync init file://$PWD/new-project-repo file://$PWD/old-project-repo/my-project
svnsync sync file://$PWD/new-project-repo
# go drink some coffee
Est-ce que la création d'un nouveau dépôt est la clé ici ou juste pour se débarrasser d'un niveau de sous-répertoires? Si ce dernier, "svn move" est votre ami. – laalto
Cette question a été posée et a déjà été répondue plusieurs fois - recherche de "svndumpfilter". –