Share via


Limites do Git

Azure DevOps Services

Impomos alguns limites de recursos aos repositórios do Git no Azure Repos. O nosso objetivo é garantir a fiabilidade e disponibilidade para todos os clientes. Além disso, ao manter a quantidade de dados e o número de emissões dentro de parâmetros razoáveis, terá uma melhor experiência geral com o Git.

O Git participa na limitação de taxas juntamente com o resto dos Serviços de DevOps do Azure. Além disso, impõemos limites ao tamanho total dos repositórios, pushes e comprimento dos caminhos de ficheiros e diretórios.

Tamanho do repositório

Os repositórios não devem ter mais de 250 GB. Para obter o tamanho do repositório, execute "git count-objects -vH" numa linha de comandos e procure a entrada denominada "size-pack":

D:\my-repo>git count-objects -vH

count: 482
size: 551.67 KiB
in-pack: 100365
packs: 25
size-pack: 642.76 MiB   <-- size of repository
prune-packable: 83
garbage: 0
size-garbage: 0 bytes

Recomendamos que mantenha o repositório abaixo dos 10 GB para uma operação ideal. Se o seu repositório exceder este tamanho, considere utilizar os Artefactos git-LFS, Scalar ou Azure para refatorizar os artefactos de desenvolvimento.

Os Repositórios do Azure reduzem continuamente o tamanho geral e aumentam a eficiência dos repositórios git ao consolidar ficheiros semelhantes em pacotes. Para repositórios próximos de 250 GB, o limite interno em ficheiros de pacote pode ser atingido antes da conclusão do processo de otimização. Qualquer utilizador que tente escrever no repositório vê a seguinte mensagem de erro: "O limite de ficheiros do Git Pack foi atingido, as operações de escrita estão temporariamente indisponíveis enquanto o repositório é atualizado." As operações de escrita serão restauradas imediatamente após a conclusão da tarefa.

Tamanho do push

Os pushs grandes utilizam muitos recursos, bloqueando ou abrandando outras partes do serviço. Estes pushes muitas vezes não mapeiam para atividades normais de desenvolvimento de software. Alguém pode ter verificado inadvertidamente as saídas de compilação ou uma imagem de VM, por exemplo. Por estes motivos e muito mais, os pushes estão limitados a 5 GB de cada vez.

Há uma exceção em que os grandes pushs são normais. Quando migra um repositório de outro serviço para os Repositórios do Azure, este é apresentado como um único push. Não pretendemos bloquear importações, mesmo de repositórios muito grandes. Se o repositório for superior a 5 GB, tem de utilizar a Web para Importar o repositório em vez da linha de comandos.

Tamanho push para objetos LFS

O Git LFS não conta para o limite de 5 GB de repositório. O limite de 5 GB é apenas para ficheiros no repositório real e não para blobs armazenados como parte do LFS. Se tiver falhas no limite de 5 GB, verifique se o seu .gitattributes ficheiro inclui as extensões dos ficheiros que pretende controlar com o LFS e se este ficheiro foi guardado e testado antes de preparar os ficheiros grandes para serem controlados.

Comprimento do caminho

O Azure Repos tem uma política push que limita o comprimento dos caminhos num repositório git ao rejeitar pushes que introduzem caminhos demasiado longos. Ao contrário da política Comprimento máximo do caminho, não há forma de desativar ou substituir esta política com um limite diferente, uma vez que impõe os valores máximos possíveis suportados pela nossa plataforma.

Existem dois limites impostos:

  • Comprimento total do caminho: 32 766 carateres
  • Comprimento do componente do caminho (ou seja, pasta ou nome de ficheiro): 4096 carateres

Só afeta os caminhos recentemente introduzidos num push. Se alterar um ficheiro existente, este não se aplica. No entanto, se criar um novo ficheiro ou mudar o nome ou mover um existente, este será aplicado.

Se algumas das consolidações que estão a ser enviadas introduzirem caminhos que excedam os limites, o push é rejeitado com uma das seguintes mensagens de erro:

  • VS403729: The push was rejected because commit '6fbe8dc700fdb33ef512e2b9e35436faf555de76' contains a path, which exceeds the maximum length of 32766 characters.
  • VS403729: The push was rejected because commit 'd23277abfe2d8dcbb88456da880de631994dabb4' contains a path component, which exceeds the maximum length of 4096 characters.