Sincronizando dois servidores Git entre empresas

4

Existem duas empresas. Cada um tem um servidor Git em execução. Se a empresa A verificar em algum código, isso deve ser atualizado no servidor da empresa B e vice-versa.

Os dois servidores devem manter-se sincronizados entre si.

SO do servidor: Ubuntu Server 14.04

GIT: Gitlab

Qual solução seria apropriada em nosso caso (espelhamento, ganchos, ...)?

    
por Matthias Reisner 07.07.2014 / 10:54

1 resposta

2

git-sync

  • Maior desempenho
  • Com base nas versões modernas do bash e do awk (precisam ser atualizadas no Mac OS)
  • Difícil de modificações.
  • Exclusão e criação de ramificações em outro repositório.
  • Mais robusto para recriar a sincronização de qualquer posição e a partir do zero.
  • Preparado para uma automação de notificação adicional.
  • Um único repositório Git não-nulo é usado para sincronização.

Pure Git com Convenção sobre o Git

  • Muito mais personalizável
  • É mais lento
  • Se você se comprometer com outro lado durante a sincronização, esse commit poderá ser rejeitado (precisa de uma segunda tentativa)
  • Dependências tecnológicas mínimas
  • Você não pode excluir ramificações do outro lado.
  • Repositórios Bare Git são usados para sincronização.

Notas comuns

  • Não depende da implementação do Git-server.
  • Tem proteção contra exclusões ocasionais.
  • Testado em uma produção por um longo tempo.
  • A sincronização de tags Git foi removida porque o GitLab adora bloquear a exclusão da tag.
  • Failover & a recuperação automática da sincronização é suportada. Especialmente para problemas de rede.
  • Projetado para cobrir centenas de casos sutis que não descrevo aqui.

Como usar

  • Selecione um prefixo para cada repositório. Somente ramificações com esses prefixos serão sincronizadas. Veja abaixo Convenção de nomenclatura .
  • Descreva seus dois repositórios em um arquivo de configuração simples
  • Executa periodicamente o script de sincronização
  • A solução é aplicada por repositório (vs por servidor). Qualquer quantidade de pares de sincronização pode ser criada.

Convenção de nomenclatura

É qualquer nome prefixado. Cada lado possui seus conflitos de prefixo e de não avanço rápido para que os refs Git prefixados sejam resolvidos em favor de um dono.
Exemplos de company1/ desenvolver, company2- desenvolver company1/ JIRA-123, company2- JIRA-321

Outras ideias

Abordagens para sincronizar repositórios Git remotos

A situação

Digamos que temos equipes em empresas separadas. Cada equipe possui seu próprio repositório hospedado em seu próprio servidor git separado. Isso geralmente acontece em cenários cliente-fornecedor.

    
por 04.10.2017 / 23:34