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

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

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

Вопросы:

  • Правильно ли это выглядит? Я особенно заинтересован в шаге 6.
  • Есть ли способ сделать это, чтобы сократить время простоя?

Спасибо.

Ответ 1

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

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

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

  • Я бы создал специального пользователя "миграции" gitosis, со всеми доступными проектами.
  • clone --bare каждый проект на новом сервере
  • копировать наведите крючки
  • Запретить доступ к старым серверам
  • сделать последнее git fetch для каждого клонированного репо
  • удалить происхождение </downtime>
  • восстановить доступ