Если вы хотите переместить репозиторий и сохранить историю, вам, вероятно, понадобится доступ к файловой системе на обоих хостах. Самое простое решение, если вашим внутренним сервером является FSFS (по умолчанию в последних версиях), это сделать копию файловой системы всей папки репозитория.
Если у вас есть бэкэнд Berkley DB, если вы не уверены, какой у вас бэкэнд, или если вы меняете номера версий SVN, вы захотите использовать svnadmin, чтобы выгрузить ваш старый репозиторий и загрузить его. в ваш новый репозиторий. Использование svnadmin dump
даст вам одну резервную копию файла, которую вы сможете скопировать в новую систему. Затем вы можете создать новый (пустой) репозиторий и использовать svnadmin load
, который по существу воспроизведет все коммиты вместе с его метаданными (автор, метка времени и т. Д.).
Подробнее о процессе выгрузки / загрузки вы можете прочитать здесь:
http://svnbook.red -bean.com / о / 1,8 / svn.reposadmin.maint.html # svn.reposadmin.maint.migrate
Кроме того, если вы делаете svnadmin load
, убедитесь, что вы используете опцию --force-uuid
, иначе у людей возникнут проблемы с переключением на новый репозиторий. Subversion использует UUID для внутренней идентификации хранилища и не позволяет переключать рабочую копию в другое хранилище.
Если у вас нет доступа к файловой системе, могут быть другие сторонние варианты (или вы можете написать что-то), чтобы помочь вам в миграции: по сути, вам придется использовать журнал svn для воспроизведения каждой ревизии в новой хранилище, а затем исправить метаданные потом. Для этого вам понадобятся сценарии ловушек pre-revprop-change и post-revprop-change, которые предполагают доступ к файловой системе, поэтому YMMV. Или, если вы не хотите сохранять историю, вы можете использовать свою рабочую копию для импорта в новый репозиторий. Но, надеюсь, это не так.