4

Есть две компании. У каждого работает Git-сервер. Если компания A регистрирует некоторый код, он должен быть обновлен на сервере компании B и наоборот.

Два сервера должны быть синхронизированы друг с другом.

Серверная ОС: Ubuntu Server 14.04

GIT: Gitlab

Какое решение будет уместным в нашем случае (зеркальное отображение, хуки, ...)?

1 ответ1

2

ГИТ-синхронизация

  • Высочайшая производительность
  • Основан на современных версиях bash и awk (необходимо обновить в Mac OS)
  • Сложно для модификаций.
  • Удаление и создание веток в другом репозитории.
  • Более надежный для воссоздания синхронизации с любой позиции и с нуля.
  • Подготовлено для дополнительного уведомления автоматизации.
  • Для синхронизации используется один не пустой Git-репозиторий.

Чистый мерзавец с соглашением по мерзавцу

  • Гораздо больше настраиваемых
  • Медленнее
  • Если во время синхронизации вы совершите переход на другую сторону, этот запрос может быть отклонен (потребуется вторая попытка)
  • Минимальные технические зависимости
  • Вы не можете удалить ветви на другой стороне.
  • Хранилища Bare Git используются для синхронизации.

Общие заметки

  • Не зависит от реализации Git-сервера.
  • Имейте защиту от случайных удалений.
  • Проверено в производстве в течение длительного времени.
  • Синхронизация Git-тегов была удалена, потому что GitLab любит блокировать удаление тегов.
  • Отказоустойчивость и автоматическое восстановление синхронизации поддерживается. Особенно для проблем с сетью.
  • Разработанный, чтобы покрыть сотни случайных вещей, я не описываю здесь.

Как пользоваться

  • Выберите префикс для каждого хранилища. Только ветки с такими префиксами будут синхронизированы. См. Соглашение об именах ниже.
  • Опишите ваши оба репозитория в простом конфигурационном файле
  • Периодически запускается скрипт синхронизации
  • Решение применяется для каждого хранилища (против сервера). Может быть создано любое количество пар синхронизации.

Соглашение об именовании

Это любое префиксное имя. Каждая сторона имеет свой префикс, и конфликты без ускоренной пересылки для префиксных ссылок Git будут решаться в пользу владельца.
Примеры
company1/ разработка, company2- разработка
company1/ JIRA-123, company2- JIRA-321

Другие идеи

Подходы для синхронизации удаленных репозиториев Git

Ситуация

Скажем, у нас есть команды в отдельных компаниях. Каждая команда имеет свой собственный репозиторий, размещенный на отдельном git-сервере. Это часто случается для сценариев поставщик-клиент.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .