Якщо ви хочете перемістити сховище та зберегти історію, вам, ймовірно, знадобиться доступ до файлової системи на обох хостах. Найпростішим рішенням, якщо ваш серверний сервер є FSFS (за замовчуванням в останніх версіях), є створення файлової системи копією всієї папки сховища.
Якщо у вас є серверна база даних Berkley DB, якщо ви не впевнені, що таке ваша серверна база, або якщо ви змінюєте номери версій SVN, ви захочете використовувати svnadmin для скидання вашого старого сховища та завантаження його у ваш новий сховище. Використання svnadmin dump
дасть вам резервну копію одного файлу, яку ви зможете скопіювати в нову систему. Потім ви можете створити нове (порожнє) сховище та використовувати svnadmin load
, яке, по суті, буде відтворювати всі коміти разом із його метаданими (автор, позначка часу тощо).
Ви можете прочитати більше про процес скидання / завантаження тут:
http://svnbook.red-bean.com/en/1.8/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate
Крім того, якщо ви це зробите svnadmin load
, переконайтеся, що ви використовуєте цю --force-uuid
опцію, інакше у людей виникнуть проблеми з переходом на нове сховище. Subversion використовує UUID для внутрішньої ідентифікації сховища, і це не дозволить вам перемкнути робочу копію на інше сховище.
Якщо у вас немає доступу до файлової системи, можливо, існують інші сторонні варіанти (або ви можете щось написати), які допоможуть вам перейти: по суті, вам доведеться використовувати журнал svn для відтворення кожної редакції в новому сховищі, і потім виправити метадані згодом. Для цього вам знадобляться сценарії підключення pre-revprop-change та post-revprop-change, які передбачають доступ до файлової системи, тобто YMMV. Або, якщо ви не хочете зберігати історію, ви можете використовувати свою робочу копію для імпорту в нове сховище. Але, сподіваємось, це не так.
svnrdump dump https//remote/svn/trunk > repos.dump
. У більшості випадків команда працює і з SVN 1.6, але може мати деякі проблеми, див. Документи. Працює як у * nix, так і у Windows.