Trabalhar com repositórios grandes

Concluído

O Git é um ótimo sistema de controle de versão amplamente adotado e recomendado, mas algumas preocupações devem ser consideradas e resolvidas ao trabalhar com repositórios grandes.

Embora seja funcional contar uma cópia local dos repositórios em um sistema de controle de versão distribuído, isso pode ser um problema significativo quando há repositórios grandes.

Por exemplo, a Microsoft descobriu esse problema ao migrar um repositório com mais de 300 GB de dados de um sistema interno para o Git.

Por que os repositórios ficam grandes

Há duas causas principais para que os repositórios fiquem grandes:

  • Histórico longo
  • Arquivos binários grandes

Clone superficial

Se os desenvolvedores não precisam de todo o histórico disponível nos repositórios locais, uma boa opção é implementar um clone superficial.

Ele fornece economias tanto no espaço nos sistemas de desenvolvimento locais quanto no tempo para a sincronização.

Você pode especificar a profundidade do clone que deseja executar:

git clone --depth [depth] [clone-url]

Você também pode reduzir clones filtrando branches ou clonando apenas uma ramificação.

VFS para Git

O VFS para Git ajuda com repositórios grandes. Ele requer um cliente Git LFS.

Os comandos típicos do Git não são afetados, mas o Git LFS funciona com o sistema de arquivos padrão para baixar os arquivos necessários em segundo plano quando você precisa de arquivos do servidor.

O cliente Git LFS foi lançado como software livre. O protocolo é simples com quatro pontos de extremidade semelhantes aos pontos de extremidade REST.

Para obter mais informações sobre repositórios grandes, confira: Trabalhar com arquivos grandes e Sistema de arquivos virtual para Git: habilitar o Git em escala empresarial.

Escalar

Captura de tela do ícone do Scalar.

O Scalar é um aplicativo .NET Core disponível para Windows e macOS. Com ferramentas e extensões para Git a fim de permitir que repositórios muito grandes maximizem o desempenho do comando Git. A Microsoft o usa para repositórios Windows e Office.

Se o Azure Repos hospedar seu repositório, você poderá clonar um repositório usando o protocolo GVFS.

Ele consegue habilitar alguns recursos avançados do Git, como:

  • Clone parcial: reduz o tempo de obtenção de um repositório em funcionamento, não baixando todos os objetos Git imediatamente.
  • Pré-busca em segundo plano: baixa dados de objetos Git de todos os remotos a cada hora, reduzindo o tempo das chamadas git fetch em primeiro plano.
  • Sparse-checkout: limita o tamanho do diretório de trabalho.
  • Monitor do sistema de arquivos: controla os arquivos modificados recentemente e elimina a necessidade de o Git verificar toda a árvore de trabalho.
  • Commit-graph: acelera os guias de commit e os cálculos de acessibilidade, acelerando comandos como o git log.
  • Multi-pack-index: habilita pesquisas rápidas de objeto em muitos arquivos de pacote.
  • Reempacotamento incremental: reempacota os dados Git empacotados em menos arquivos de pacote sem interromper comandos simultâneos usando o multi-pack-index.

Observação

Atualizamos a lista de recursos que o Scalar configura automaticamente conforme uma nova versão do Git é lançada.

Para obter mais informações, consulte: