Trabalhar com grandes repositórios
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 grandes repositórios.
Embora ter uma cópia local de repositórios em um sistema de controle de versão distribuído seja funcional, isso pode ser um problema significativo quando repositórios grandes estão em vigor.
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
Existem duas causas principais para grandes repositórios:
- Longa história
- Arquivos binários grandes
Clone raso
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.
Poupa espaço nos sistemas de desenvolvimento local 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 filtrando ramificações ou clonando apenas uma única ramificação.
VFS para Git
O VFS para Git ajuda com grandes repositórios. 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 open-source. 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 Virtual File System for Git: Enable Git at Enterprise Scale.
Escalar
Scalar é um aplicativo .NET Core disponível para Windows e macOS. Com ferramentas e extensões para o Git para permitir repositórios muito grandes para maximizar o desempenho do seu comando Git. A Microsoft usa-o 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 ao 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 objetos Git de todos os controles remotos a cada hora, reduzindo o tempo de chamadas de busca do Git em primeiro plano.
- Sparse-checkout: limita o tamanho do seu diretório de trabalho.
- Monitor do sistema de arquivos: rastreia os arquivos recentemente modificados e elimina a necessidade do Git para verificar toda a árvore de trabalho.
- Commit-graph: acelera as caminhadas de commit e os cálculos de acessibilidade, acelerando comandos como git log.
- Multi-pack-index: permite pesquisas rápidas de objetos em muitos arquivos de pacote.
- Repack incremental: reempacota os dados do Git compactados 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 à medida que uma nova versão do Git é lançada.
Para obter mais informações, consulte: