Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022
O Repositórios do Azure oferece alto desempenho e fiabilidade para a maioria dos repositórios Git. O git tem melhor desempenho quando os repositórios se assemelham a projetos típicos de código-fonte: os ficheiros são relativamente pequenos, as alterações são incrementais e localizadas, e os diretórios têm uma hierarquia bem organizada. Estas condições permitem que o Git utilize compressão delta e percorra árvores de repositório de forma eficiente.
Quando um repositório não cumpre estas condições, o Git tem de ler e transferir mais e maiores objetos. Como resultado, operações comuns, como clonagem, busca e navegação, tornam-se mais lentas.
Este artigo explica como analisar a saúde do repositório, identificar e resolver causas comuns de degradação de desempenho e reduzir a quantidade de dados transferidos durante clones e fetches.
Para os limites de recursos que se aplicam a repositórios, veja limites Git.
Análise de saúde de repositórios
Comece pelo painel integrado de Saúde e Utilização . Resume o tamanho do repositório, o número de objetos, o número de referências e outras métricas. Também destaca valores que se aproximam ou excedem dos limiares recomendados.
Este painel pode não estar disponível em versões mais antigas do Azure DevOps Server. Se isso não estiver disponível, considera atualizar para uma versão mais recente para aceder a métricas integradas de saúde do repositório.
Ferramentas CLI
Para uma inspeção mais detalhada, execute as seguintes ferramentas contra um clone completo do repositório.
git-sizer
Use git-sizer para uma avaliação de alto nível do tamanho e complexidade do repositório. Calcula métricas a nível de repositório e atribui um nível de preocupação a cada uma. Descarregue a versão mais recente na página de lançamentos e siga o Getting Started para executar a ferramenta e rever o seu resultado.
Estrutura de repositório git
Usar git repo structure como alternativa a git-sizer. Este comando experimental foi concebido para fornecer funcionalidades semelhantes nativamente no Git mainstream. Para mais informações, consulte a documentação do repositório Git.
inquérito Git
Use git survey para análise ao nível do caminho. Destas ferramentas de CLI, fornece a análise mais detalhada. Classifica os principais diretórios e ficheiros por número de objetos, tamanho no disco e tamanho inflacionado. O relatório ajuda-o a identificar os maiores contribuintes para o tamanho do repositório e a direcionar-os para limpeza ou reestruturação.
Este comando está incluído no Git para Windows e no fork do Git da Microsoft. A disponibilidade noutras distribuições Git pode variar.
Tip
O crescimento de repositórios é mais fácil de interpretar ao longo do tempo. Execute estas ferramentas periodicamente e compare os resultados para acompanhar as tendências de crescimento e detetar padrões problemáticos precocemente.
Problemas e mitigações de desempenho de repositórios comuns
Os padrões seguintes são os contribuintes mais comuns para o crescimento dos repositórios e para a degradação do desempenho.
Ficheiros grandes e frequentemente atualizados
Ficheiros grandes reduzem o desempenho do Git, sejam eles de texto ou binário. O impacto é maior quando mudam frequentemente. Como cada alteração normalmente reescreve uma grande parte do ficheiro, a compressão delta torna-se ineficaz e faz com que o Git armazene quase um snapshot completo para cada revisão. Como resultado, o tamanho do repositório e o número de objetos crescem rapidamente.
Ações recomendadas
- Mantenha ficheiros grandes e frequentemente atualizados fora do Git. Guarde-os no Git LFS ou Artefactos do Azure e não faça commit dos resultados da compilação nem de conteúdo gerado. Para mais informações, consulte Trabalhar com ficheiros grandes no seu repositório Git.
- Se um ficheiro grande tiver de permanecer no Git e mudar frequentemente, divida-o em partes lógicas menores que possam ser versionadas independentemente.
- Para impedir que novos ficheiros grandes entrem no repositório, ative a política de tamanho máximo de ficheiro .
Usa o Git LFS apenas para ficheiros grandes que não diferem bem. Mover muitos ficheiros pequenos para o LFS não melhora o desempenho e pode piorar a situação.
Estruturas de diretórios sobredimensionadas ou planas
Um diretório com muitas entradas diretas, tanto ficheiros como subdiretórios, é armazenado como um grande objeto em árvore. Qualquer alteração dentro dele faz com que o Git escreva uma nova cópia de todo o objeto. Este comportamento atrasa as operações Git e aumenta o tamanho do repositório ao longo do tempo, mesmo quando as alterações são pequenas.
Mantenha o número de entradas imediatas em qualquer diretório num nível gerível. Um número superior a algumas centenas é um sinal de que a estrutura deve ser reequilibrada.
Ações recomendadas
- Organizar as entradas num layout equilibrado e hierárquico. Distribua os ficheiros e subdiretórios de forma uniforme para que nenhum diretório individual contenha um número excessivo de entradas diretas.
- Se precisares de armazenar uma grande quantidade de dados gerados no repositório, particiona-os num layout aninhado, como ano/mês/dia.
- Mantém o conteúdo gerado numa ordem consistente dentro de cada ficheiro. Adicionar ou remover uma pequena quantidade de dados deve afetar apenas as linhas relacionadas, não reordenar o resto do ficheiro e criar um diferencial grande. Por exemplo, ordena sempre os itens da lista da mesma forma.
Ramificações não utilizadas
Demasiadas ramificações duradouras e não utilizadas podem aumentar o tamanho do repositório e atrasar as operações. Quando utiliza git clone um repositório, o Git descarrega objetos acessíveis a partir de todos os ramos remotos, incluindo ficheiros que nunca foram integrados em main.
Ações recomendadas
- Apague ramos obsoletos ou não utilizados regularmente.
- Se o seu repositório precisar realmente de um número muito grande de ramos, considere ativar Referências Limitadas.
Ambas as ações reduzem o número de referências que os clientes e o servidor negociam durante cada busca.
Importante
O armazenamento do Repositórios do Azure é apenas para acréscimos no servidor. As recomendações deste artigo impedem um crescimento futuro rápido, mas não reduzem um repositório que já cresceu. Ficheiros e diretórios previamente confirmados permanecem no servidor. Fazer um push forçado ou eliminar uma ramificação não recupera esse espaço. A única forma de remover completamente os dados é recriar o repositório e migrar apenas o conteúdo de que precisas.
Acelerar clonagens e obtenções
Por mais saudável que seja um repositório, os clientes podem reduzir a quantidade de dados que descarregam:
- Uma clonagem superficial limita a quantidade de histórico obtido, o que funciona bem para CI que só precisa dos commits mais recentes.
- Um clone parcial preserva o histórico completo, mas só descarrega o conteúdo dos ficheiros quando necessário.
Para mais informações sobre ambas as opções, consulte Git Partial Clone no Azure DevOps.