Если вы хотите переместить репозиторий и сохранить историю, вам, вероятно, понадобится доступ к файловой системе на обоих хостах. Самое простое решение, если ваш бэкэнд - 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.rsvndump
отлично сработал для меня при переносе репозитория с svnrepository.com на сервер Ubuntu, который я контролирую.Как установить и использовать rsvndump в Ubuntu:
Установите недостающие зависимости (библиотеки APR и Subversion)
Установить rsvndump
Выгрузить удаленный репозиторий SVN в локальный файл
Создайте новый репозиторий и загрузите в локальный файл дампа
источник
svn switch --relocate http://my.svnrepository.com/svn/old_repo http://newserver.com/svn/my_new_repo
Вы также можете использовать svnsync. Для этого требуется только доступ только для чтения к исходному репозиторию
больше на svnbook
источник
Выдержка из моей заметки в блоге :
Теперь вы можете импортировать файл дампа, например, если вы переходите между машинами / версиями Subversion. например, если бы я создал файл дампа из исходного репозитория и загрузил его в новый репозиторий, как показано ниже.
Команды для Unix-подобных систем (из терминала):
Команды для систем Microsoft Windows (из cmd shell):
источник
Инструмент для этого был бы
Но для того, чтобы это работало, вам необходим доступ файловой системы к репозиторию. И как только он у вас есть (и при условии, что репозиторий находится в формате FSFS), вы можете просто скопировать репозиторий в новое место (если он в формате BDB, настоятельно рекомендуется дамп / загрузка).
Если у вас нет доступа к файловой системе, вам придется попросить поставщика репозитория предоставить вам дамп (и заставить их удалить свой репозиторий - и надеяться, что они подчинятся)
источник
Если у вас нет файлового доступа к репозиторию, я предпочитаю rsvndump (удаленный дамп репозитория Subversion) для создания файла дампа.
источник
В принципе, есть много способов выполнить задачу. Эта тема подробно освещена в SVNBook | Перенос данных репозитория в другое место, поэтому я предлагаю прочитать раздел книги.
Вот краткое описание ваших вариантов:
Это зависит от вашей среды, но есть большая вероятность, что вы можете просто скопировать репозиторий на новый сервер, и он будет работать. После копирования репозитория необходимо пересмотреть сценарии ловушек репозитория, чтобы убедиться, что они работают так, как вы ожидаете.
Вы можете использовать
svnadmin dump
иsvnadmin load
команды для, ЭУ, генерировать полный дамп , а затем загрузить его в другое хранилище на другом сервере. Вам понадобитсяsvnadmin create
новый чистый репозиторий, чтобы загрузить в него дамп. Имейте в виду, что этот подход имеет дело только с историей репозитория и не перемещает скрипты ловушек и файлы конфигурации репозитория ! Кроме того, вы должны иметь доступ для чтения файловой системы к исходному репозиторию, чтобы выгрузить его.Начиная с Subversion 1.7,
svnrdump
инструмент доступен. Вообще говоря, он имитируетsvnadmin dump
иsvnadmin load
функционирует, но работает удаленно. Вам не требуется иметь доступ к файловой системе для чтения / записи к исходным и целевым репозиториям, поскольку инструмент работает удаленно, как клиент Subversion, например, по протоколу HTTPS. Таким образом, вам необходимо иметь доступ для чтения к исходному репозиторию и для чтения / записи в целевой.Другой вариант - использовать
svnadmin hotcopy
команду. Команда в основном используется для резервного копирования, она создает полную копию репозитория, включая скрипты конфигурации и ловушки. После этого вы можете переместить репозиторий с горячим копированием на другой сервер.источник
Вы также можете использовать
svnadmin hotcopy
команду:Требуется полная резервная копия из репозитория, включая все перехватчики, файлы конфигурации и т. Д.
Подробнее на SVN Book
источник
Предполагая, что у вас есть необходимые привилегии для запуска svnadmin, вам нужно использовать команды dump и load .
источник
Я нашел статью о том, как перенести репозитории svn с одной службы хостинга на другую и как делать локальные резервные копии:
Определите, где вы будете хранить свои репозитории:
svnadmin create $MYREPO
Создайте файл ловушки и сделайте его исполняемым:
Теперь мы можем начать импорт репозитория с
svnsync
, что инициализирует целевой репозиторий для синхронизации из другого репозитория:И последний штрих, чтобы перенести все ожидающие изменения в место назначения из источника, с помощью которого он был инициализирован:
Теперь у вас есть локальный репозиторий svn в
~/repo
каталоге.Источник:
источник
Вы можете найти некоторую помощь по миграции репозиториев SVN в Главе 5. Администрирование репозитория, Миграция репозитория .
Этот подход требует доступа к svnadmin.
источник