Как переместить Git-репозитории и минимизировать время простоя - PullRequest
1 голос
/ 30 августа 2010

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

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

Вопросы:

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

Спасибо.

1 Ответ

1 голос
/ 30 августа 2010

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

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

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

  • Я бы создалспециальный пользователь «миграции», имеющий доступ ко всем проектам
  • clone --bare каждый проект на новом сервере
  • копирование при наведении курсора
  • Запрет доступа к старому серверу
  • сделать последние git fetch на каждом клонированном репо
  • удалить источник
  • восстановить доступ
...