Как переместить репозитории Git и минимизировать время простоя
Вопрос
Я буду переносить репозитории Git со старого SCM-сервера на новый.Моя главная забота (помимо точности, конечно) - свести к минимуму время простоя.Вот мой план.:
- На новом компьютере клонируйте каждый репозиторий, используя
git clone --mirror
- Копирование перехватов репо для каждого репозитория
- Запретить доступ к старому серверу (мы используем gitosis, поэтому удаляем доступ для всех пользователей, кроме нового сервера)
- Переместите запись DNS таким образом, чтобы пользователи Git использовали DNS-псевдоним
- Выполнять
git pull
для каждого репозитория на новом сервере. - Для каждого репозитория на новом сервере отредактируйте конфигурационный файл, чтобы удалить
remote "origin"
Раздел. - Включить доступ к новому серверу
Вопросы:
- Правильно ли это выглядит?Меня особенно интересует шаг №6.
- Есть ли какой-нибудь способ сделать это, который сократит время простоя?
Спасибо.
Решение
Я бы сделал это (если между старым сервером и новым сервером невозможна связь):
- объедините каждое репо используя
git bundle
- скопируйте пакет на новый сервер
- создавайте голые репозитории
git fetch
из этих пакетов в каждом из пустых открытых репозиториев (источник не нужно устанавливать)- скопируйте наведите курсор мыши на крючки
- Запретить доступ к старому серверу
- создайте последний пакет git для каждого репозитория (инкрементный пакет, очень быстрый).
- скопируйте эти маленькие пачки
git fetch
прирост от небольших инкрементных пакетов
</ время простоя:нет источника для удаления>- восстановить доступ
Если между новым и старым сервером возможна связь (через SSL),:
- Я бы создал специального "миграционного" пользователя gitosis с доступом ко всем проектам
clone --bare
каждый проект выполняется на новом сервере- скопируйте наведите курсор мыши на крючки
- Запретить доступ к старому серверу
- сделай последний
git fetch
в каждом клонированном репозитории - удалить источник </ время простоя>
- восстановить доступ
Не связан с StackOverflow