Compartilhar via


Limites do Git

Azure DevOps Services

Impomos limites de recursos em repositórios Git em Azure Repos para garantir confiabilidade e disponibilidade para todos os clientes. Ao manter os tamanhos dos dados e o número de pushes razoáveis, você pode esperar uma melhor experiência geral com o Git.

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

Tamanho do repositório

Os repositórios não devem ter mais de 250 GB. Para recuperar o tamanho do seu 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

Recomendamos manter seu repositório abaixo de 10 GB para obter o desempenho ideal. Se o repositório exceder esse tamanho, considere usar o Git-LFS, o Scalar ou o Azure Artifacts para gerenciar 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 da conclusão do processo de otimização. Quando esse limite é atingido, os usuários que tentam gravar no repositório veem a seguinte mensagem de erro: "O limite de arquivos do pacote Git foi atingido, as operações de gravação estão temporariamente indisponíveis enquanto o repositório é atualizado". As operações de gravação são restauradas imediatamente após a conclusão do trabalho de otimização.

Os arquivos não devem ter mais de 100 MB. Esse limite ajuda a garantir o desempenho e a confiabilidade ideais do repositório Git. Arquivos grandes podem retardar significativamente as operações do repositório, como clonagem, busca e envio de alterações. Se você precisar armazenar arquivos grandes, considere usar o Git LFS (Large File Storage), que foi projetado para lidar com arquivos grandes com eficiência, armazenando-os fora do repositório principal e mantendo apenas referências a eles dentro do repositório. Essa abordagem ajuda a manter o desempenho e a capacidade de gerenciamento do repositório Git.

Tamanho do empurrão

Grandes pushes consomem recursos significativos, bloqueando ou diminuindo a velocidade de outras partes do serviço. Esses pushes geralmente não se alinham com as atividades típicas de desenvolvimento de software e podem incluir itens como saídas de build ou imagens de VM. Portanto, os pushes são limitados a 5 GB por vez.

Há uma exceção em que pushes grandes são normais: migrar um repositório de outro serviço para Azure Repos. Essas migrações chegam como um único empurrão, e não pretendemos bloquear as importações, mesmo para grandes repositórios. Se o repositório exceder 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 se aplica somente a arquivos no repositório real, não a blobs armazenados com o LFS. Se você encontrar pushes com falha devido ao limite de 5 GB, certifique-se de que seu .gitattributes arquivo inclua as extensões dos arquivos que você pretende rastrear com o LFS. Certifique-se de que esse arquivo seja salvo e preparado antes de preparar os arquivos grandes a serem rastreados.

Comprimento do caminho

Azure Repos impõe uma política de push que limita o comprimento dos caminhos em um repositório Git rejeitando pushes que introduzem caminhos excessivamente longos. Ao contrário da política de comprimento máximo do caminho, você não pode desativá-la ou substituí-la, pois ela impõe os valores máximos suportados por nossa plataforma.

Os seguintes limites são aplicados:

  • Comprimento total do caminho: 32.766 caracteres
  • Comprimento do componente do caminho (nome da pasta ou do arquivo): 4.096 caracteres

Essa política afeta apenas os caminhos recém-introduzidos em um push. Ele não se aplica se você alterar um arquivo existente, mas se aplica se você criar um novo arquivo, renomear ou mover um existente.

Se algum commit que está sendo enviado introduzir caminhos que excedam esses 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.