Trabalhar com repositórios grandes
O Git é um ótimo sistema de controle de versão amplamente adotado e recomendado, mas algumas preocupações devem ser feitas e cuidadas ao trabalhar com repositórios grandes.
Embora ter uma cópia local de repositórios em um sistema de controle de versão distribuída seja funcional, isso pode ser um problema significativo quando grandes repositórios estão em uso.
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 se tornam grandes
Há duas causas primárias para repositórios grandes:
- Longa história
- Arquivos binários grandes
Clone superficial
Se os desenvolvedores não precisarem de todo o histórico disponível em seus repositórios locais, uma boa opção é implementar um clone superficial.
Ele economiza espaço em sistemas de desenvolvimento locais e o tempo necessário para sincronizar.
Você pode especificar a profundidade do clone que deseja executar:
git clone --depth [depth] [clone-url]
Você também pode reduzir clones ao filtrar ramificações ou ao clonar apenas uma única 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, consulte: Trabalhando com arquivos grandes e Sistema de Arquivos Virtuais para Git: Habilitar o Git no Enterprise Scale.
Escalar
Scalar é um aplicativo .NET Core disponível para Windows e macOS. Com ferramentas e extensões para o Git que permitem que repositórios muito grandes maximizem o desempenho de seus comandos Git. A Microsoft o usa para repositórios do Windows e do 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 para obter um repositório de trabalho ao não baixar todos os objetos Git imediatamente.
- pré-busca em segundo plano: baixa dados de objeto Git de todos os remotos a cada hora, reduzindo o tempo para chamadas de busca de git 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 percursos de commits e os cálculos de alcançabilidade, acelerando comandos como o comando git log.
- Multi-pack-index: permite pesquisas rápidas de objetos em muitos arquivos de pacote.
- Reempacotamento incremental: Reempacote os dados do Git em menos arquivos de pacote sem interromper comandos simultâneos usando o multi-pack-index.
Nota
Atualizamos a lista de recursos que o Scalar configura automaticamente como uma nova versão do Git é lançada.
Para obter mais informações, consulte: