Содержание
Перенос репозитория на другой сервер
— lonebuddha 2023/05/09 16:00
В этой статье представлен алгоритм переноса SVN репозитория с одного сервера на другой.
Перенос с использованием SSH
При наличии SSH доступа к обоим репозиториям последовательность действий такова:
- Авторизуемся по SSH на старом сервере
- Делаем dump старого репозитория
- Переносим repository.dumpfile на новый сервер
- Создаем новый репозиторий
- Загружаем dump в новый репозиторий
- Не забываем поменять адрес на клиенте
Создаем dump репозитория
svnadmin dump [repositoryPath] > dumpfile
Создаем новый репозиторий
cd [path-to-new-repository-parent-directory] svnadmin create [new_repo]
Загружаем dump в репозиторий
svnadmin load [new_repo] < dumpfile
Меняем адрес на клиенте
svn switch --relocate [old_url] [new_url]
Перенос без возможности применения SSH
Иногда встает задача переноса SVN репозитория с сервера на котором у вас нет ssh доступа. Возникнуть такая задача может у пользователей oDesk, Google Code, SourceForge и других площадок SVN доступ по ssh к которым невозможен. В таком случае можно воспользоваться svnsync. Программой позволяющей синхронизировать два репозитория. Последовательность действий:
- Создаем временный репозиторий
- Во временном репозитории создаем hook
- Синхронизируем врнменный репозиторий с удаленным при помощи svnsync
- Делаем dunp временного репозитория
- Создаем новый репозиторий
- Загружаем dump в новый репозиторий
- Не забываем поменять адрес на клиенте
Создаем внутри директории временного репозитория hook - пустой исполняемый файл
echo '#!/bin/sh' > [temp_repo]/hooks/pre-revprop-change chmod +x [temp_repo]/hooks/pre-revprop-change
Синхронизируем удаленный репозиторий с временным
svnsync init file://[full_path_to_temp_repo]/[temp_repo] [old_url] svnsync sync file://[full_path_to_repo]/[temp_repo]
Перенос одной командой
svnadmin dump /home/svn/[old_repo]/ | gzip -c | ssh <user>@<server> "gunzip -c | svnadmin load [mew_repo]"
Эта команда создает dump [old_repo] репозитория на локальном компьютере, упаковывает dump gzip'ом, для большей скорости передачи по сети, на удаленном <server> компьютере распаковывает и загружает dump в [mew_repo] репозиторий. Репозиторий [mew_repo] перед этим должен быть создан.
