Как переместить репозитории Git и минимизировать время простоя

StackOverflow https://stackoverflow.com/questions/3601242

  •  25-09-2019
  •  | 
  •  

Вопрос

Я буду переносить репозитории Git со старого SCM-сервера на новый.Моя главная забота (помимо точности, конечно) - свести к минимуму время простоя.Вот мой план.:

  1. На новом компьютере клонируйте каждый репозиторий, используя git clone --mirror
  2. Копирование перехватов репо для каждого репозитория
  3. Запретить доступ к старому серверу (мы используем gitosis, поэтому удаляем доступ для всех пользователей, кроме нового сервера)
  4. Переместите запись DNS таким образом, чтобы пользователи Git использовали DNS-псевдоним
  5. Выполнять git pull для каждого репозитория на новом сервере.
  6. Для каждого репозитория на новом сервере отредактируйте конфигурационный файл, чтобы удалить remote "origin" Раздел.
  7. Включить доступ к новому серверу

Вопросы:

  1. Правильно ли это выглядит?Меня особенно интересует шаг №6.
  2. Есть ли какой-нибудь способ сделать это, который сократит время простоя?

Спасибо.

Это было полезно?

Решение

Я бы сделал это (если между старым сервером и новым сервером невозможна связь):

  • объедините каждое репо используя git bundle
  • скопируйте пакет на новый сервер
  • создавайте голые репозитории
  • git fetch из этих пакетов в каждом из пустых открытых репозиториев (источник не нужно устанавливать)
  • скопируйте наведите курсор мыши на крючки
  • Запретить доступ к старому серверу
  • создайте последний пакет git для каждого репозитория (инкрементный пакет, очень быстрый).
  • скопируйте эти маленькие пачки
  • git fetch прирост от небольших инкрементных пакетов
    </ время простоя:нет источника для удаления>
  • восстановить доступ

Если между новым и старым сервером возможна связь (через SSL),:

  • Я бы создал специального "миграционного" пользователя gitosis с доступом ко всем проектам
  • clone --bare каждый проект выполняется на новом сервере
  • скопируйте наведите курсор мыши на крючки
  • Запретить доступ к старому серверу
  • сделай последний git fetch в каждом клонированном репозитории
  • удалить источник </ время простоя>
  • восстановить доступ
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top