Решение Avi, вероятно, самое простое, но имеет недостаток в том, что новый репозиторий будет содержать полную историю всего, что находится за пределами этого одного проекта. В приведенном ниже примере я предполагаю, что вы находитесь в командной строке машины * NIX и находитесь в каталоге, в котором находится существующий репозиторий.
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.
Если вы используете subversion 1.6.x, svnsync предоставляет лучший вариант. До 1.6.x svnsync можно было использовать только для копирования целых репозиториев. С 1.6.x он получил возможность копировать только данное поддерево хранилища.
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