Share via


Limites do Git

Azure DevOps Services

Impomos alguns limites de recursos aos repositórios Git no Azure Repos. Nossa meta é garantir a confiabilidade e a disponibilidade para todos os clientes. Além disso, mantendo a quantidade de dados e o número de pushes razoáveis, você pode esperar uma experiência geral melhor com o Git.

O Git participa da limitação de taxa junto com o restante dos Azure DevOps Services. Além disso, impomos limites ao tamanho total de repositórios, pushes e comprimento dos caminhos de arquivo e diretório.

Tamanho do repositório

Os repositórios não devem ter mais de 250 GB. Para recuperar o tamanho do repositório, execute "git count-objects -vH" em um prompt de comando e procure a entrada chamada "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

É recomendável manter seu repositório abaixo de 10 GB para uma operação ideal. Se o repositório exceder esse tamanho, considere usar o Git-LFS, Scalar ou Azure Artifacts para refatorar seus artefatos de desenvolvimento.

Azure Repos reduz continuamente o tamanho geral e aumenta a eficiência dos repositórios Git consolidando arquivos semelhantes em pacotes. Para repositórios próximos a 250 GB, o limite interno de arquivos de pacote pode ser atingido antes que o processo de otimização seja concluído. Qualquer usuário que tentar gravar no repositório verá a seguinte mensagem de erro: "O limite de arquivos do pacote Git foi atingido, as operações de gravação ficam temporariamente indisponíveis enquanto o repositório é atualizado.". As operações de gravação serão restauradas imediatamente após a conclusão do trabalho.

Tamanho do push

Os pushes grandes usam muitos recursos, bloqueando ou atrasando outras partes do serviço. Esses pushes geralmente não são mapeados para atividades normais de desenvolvimento de software. Alguém pode ter verificado inadvertidamente as saídas de build ou uma imagem de VM, por exemplo. Por esses motivos e muito mais, os pushes são limitados a 5 GB por vez.

Há uma exceção em que grandes pushes são normais. Quando você migra um repositório de outro serviço para o Azure Repos, ele entra como um único push. Não pretendemos bloquear importações, mesmo de repositórios muito grandes. Se o repositório tiver mais de 5 GB, você deverá usar a Web para Importar o repositório em vez da linha de comando.

Tamanho do push para objetos LFS

O Git LFS não conta para o limite de repositório de 5 GB. O limite de 5 GB é apenas para arquivos no repositório real, não para blobs armazenados como parte de LFS. Se você receber pushes com falha no limite de 5 GB, verifique se o .gitattributes arquivo inclui as extensões dos arquivos que você pretende rastrear usando LFS e se esse arquivo foi salvo e preparado antes de preparar os arquivos grandes a serem rastreados.

Comprimento do caminho

Azure Repos tem uma política de push que limita o comprimento dos caminhos em um repositório Git rejeitando pushes que introduzem caminhos muito longos. Ao contrário da política de comprimento máximo do caminho, não há como desabilitar ou substituir essa política por um limite diferente, pois ela impõe o máximo de valores possíveis com suporte por nossa plataforma.

Há dois limites impostos:

  • Comprimento total do caminho: 32.766 caracteres
  • Comprimento do componente de caminho (ou seja, nome da pasta ou do arquivo): 4096 caracteres

Ele afeta apenas os caminhos recém-introduzidos em um push. Se você alterar um arquivo existente, ele não se aplicará. Mas se você criar um novo arquivo ou renomear ou mover um existente, ele se aplicará.

Se alguns dos commits que estão sendo enviados por push introduzirem caminhos que excedem os limites, o push será 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.