Поскольку принятый ответ неполон и не был исправлен, вот как вы на самом деле это делаете.
(1) Ваше исходное репо является репроектом с одним проектом, с каталогом верхнего уровня foo
. Перейдите на старый сервер и создайте файл дампа:
[old-server]$ svnadmin dump /path/to/old-repo > foo.dump
(2) В вашем целевом репо уже есть два проекта с директорами верхнего уровня bar
и baz
, и он находится на http://new-server/svn
. Теперь создайте дополнительный foo
верхний уровень:
[client]$ svn ls http://new-server/svn/
bar/
baz/
[client]$ svn mkdir -m "Adding new foo project" http://new-server/svn/foo
[client]$ svn ls http://new-server/svn/
bar/
baz/
foo/
(3) На вашем новом сервере репо находится на /path/to/new-repo
(что соответствует карте http://new-server/svn/
). Обратите внимание, что svn mkdir
выше фактически не создавал новый каталог в /path/to/new-repo
; это просто изменило базу данных. Перейти на новый сервер и
[new-server]$ svnadmin load /path/to/new-repo --parent-dir foo < foo.dump
Готово, с полной историей. Теперь вы можете проверить foo
как:
[client]$ svn co http://new-server/svn/foo foo
Если вы впервые выполнили svnadmin
, вы можете обнаружить, что вы получаете ошибки прав доступа к файлу (txn-current-lock
/ etc), если, например, хранилище принадлежит apache
, и вы Вы не в группе apache
. Самое простое решение - добавить себя в группу apache
.