Skip to main content

Limites de repositório

Saiba mais sobre as limitações dos repositórios.

Determinados tipos de recursos de repositório podem ser muito grandes, exigindo processamento elevado no GitHub. Por isso, limites são estabelecidos para assegurar que as solicitações sejam completadas em um período razoável. Exceder o limite máximo recomendado aumenta o risco de redução da integridade do repositório, que inclui, entre outros, tempos de resposta lentos para operações básicas do Git e latência da interface do usuário.

Observação

Embora seguir essas diretrizes possa melhorar a estabilidade do repositório, não há garantia de capacidade de suporte, pois outros fatores podem levar a um comportamento inesperado.

A maioria dos limites abaixo afetam o GitHub e a API.

Tamanho do repositório

Para garantir o desempenho e a capacidade de gerenciamento ideais, recomendamos ficar dentro dos limites máximos a seguir para a estrutura e o tamanho do repositório.

  • Tamanho no disco: 10 GB

    O tamanho em disco é o tamanho da pasta .git (a forma compactada do repositório). Repositórios grandes podem reduzir a velocidade das operações de busca e aumentar os tempos de clonagem para desenvolvedores e CI. Para gerenciar o tamanho do repositório:

    • Use Git Large File Storage (Git LFS) para arquivos binários.
    • Armazene arquivos gerados programaticamente fora do Git, como no armazenamento de objetos.
  • Largura do diretório (número de entradas em um só diretório): 3.000

    Os diretórios que contêm vários arquivos modificados com frequência podem aumentar significativamente os custos de manutenção do repositório e prejudicar o desempenho das operações básicas do Git. Segmentar arquivos em uma estrutura de diretório superficial reduzirá o tamanho dessas árvores e resultará na criação de menos dados.

  • Profundidade do diretório: 50

    Árvores de diretório profundas podem tornar as operações de caminhada de histórico mais lentas.

  • Número de branches: 5.000

    Um grande número de branches pode resultar em dados desnecessários em operações de busca, levando a tempos de transferência lentos ou, em casos extremos, desempenho limitado do repositório.

Atividade

Para evitar problemas de limitação e desempenho, recomendamos ficar dentro dos limites operacionais a seguir.

  • Tamanho do push: esse limite é imposto em 2 GB.

  • Tamanho de objeto único:

    o limite máximo recomendado é de 1 MB. É imposto em 100 MB. Para acompanhar arquivos grandes em um repositório Git, recomendamos usar o Git LFS. Confira Sobre armazenamento de arquivo grande do Git.

  • Operações de leitura do Git (por exemplo, buscas, clones):

    o limite máximo recomendado é de 15 operações por segundo por repositório. Grandes quantidades de operações de leitura podem limitar o desempenho para um repositório. Processos automatizados, como CI, usuários de computador ou aplicativos de terceiros, às vezes podem reduzir o desempenho de um repositório. Considere otimizar a estratégia de clone da CI e/ou usar um servidor de cache de repositório. Clones rasos imporão menos custo e carga ao servidor do que clones completos, portanto, podem ter um desempenho melhor.

  • Taxa de push: o limite máximo recomendado é de 6 pushes por minuto por repositório.

Limites de texto

O GitHub exibe visualizações formatadas de alguns arquivos, como diagramas Markdown e Mermaid. O GitHub sempre tenta renderizar essas visualizações se os arquivos forem pequenos (geralmente menos de 2 MB), mas arquivos mais complexos podem atingir o tempo limite e retornar para texto sem formatação ou não serem exibidos. Esses arquivos estão sempre disponíveis em seus formatos brutos, que são distribuídos por meio do raw.githubusercontent.com, por exemplo, https://raw.githubusercontent.com/octocat/Spoon-Knife/main/index.html. Clique no botão Bruto para obter a URL bruta de um arquivo.

Limites de pull requests

Para reduzir atrasos e problemas de desempenho em repositórios com atividade de pull request alta, recomendamos ficar dentro dos limites a seguir.

  • Pull requests abertas (no mesmo branch): 1.000

    Ter muitas pull requests abertas direcionadas ao mesmo branch pode diminuir as verificações de mesclagem ou levar a tempos limite. Se você estiver usando uma fila de mesclagem, considere desabilitar a configuração "require this branch to be up to date before merging". Isso limita as verificações de mesclagem apenas às pull requests na fila.

  • Taxa de mesclagem de pull request: 1 pull request mesclada por minuto

    Cada mesclagem dispara verificações de mesclagem para todas as pull requests abertas, o que pode causar gargalos de desempenho, especialmente em repositórios ocupados. Isso também pode levar a uma situação de corrida para mesclagem que afeta a produtividade do desenvolvedor. Para reduzir a carga, desabilite a configuração "require this branch to be up to date before merging" ao usar uma fila de mesclagem.

Limites de diff

Os diffs podem ficar muito grandes, por isso impusemos estas restrições em diffs para commits, pull requests e visualizações comparadas:

  • Em uma solicitação de pull, nenhuma comparação total pode exceder 20 mil linhas que podem ser carregadas ou 1 MB de dados de comparação brutos.
  • Nenhuma comparação de arquivo único pode exceder 20 mil linhas que podem ser carregadas ou 500 KB de dados de comparação brutos. Quatrocentas linhas e 20 KB são carregados automaticamente para um só arquivo.
  • O número máximo de arquivos em uma só comparação é limitado a 300.
  • O número máximo de arquivos renderizáveis (como imagens, PDFs e arquivos GeoJSON) em uma só comparação é limitado a 25.

Algumas partes de um diff limitado podem ser exibidas, mas qualquer excedente de limite não é mostrado.

Limites de listas de commits

As páginas de solicitações de pull e de exibição de comparação mostram uma lista de commits entre as revisões base e head. Essas listas são limitadas a 250 commits. Caso o limite seja excedido, uma observação indicará que commits adicionais estão presentes (mas não são mostrados).

A contagem máxima de commits exibida na guia Commits em Github.com é 10.000. Quando necessário, use outras ferramentas (como git rev-list --count mybranch) para contar e enumerar um alto volume de commits.

Limites de rebase

A mesclagem de uma pull request usando a opção "Rebase and merge" é limitada a 100 commits. Se você tiver uma pull request com mais de 100 confirmações, precisará criar um commit de mesclagem, fazer a combinação por squash e mesclagem ou dividir os commits em várias pull requests.

Limites de organização e de conta

As organizações e as contas não podem ultrapassar 100.000 repositórios. Quando uma conta ultrapassar 50.000 repositórios, será exibida uma faixa indicando o limite que se aproxima. Além disso, os administradores receberão notificações por email e o log de auditoria será atualizado a cada 5.000 repositórios adicionais criados. Confira Sobre repositórios.

Integrações e GitHub Apps

Ao criar uma integração no GitHub, armazene os dados gerados pelo usuário nas contas do GitHub deles em vez de centralizá-los em sua conta. Isso garante que os usuários mantenham controle total sobre seu trabalho e ajuda você a evitar ultrapassar os limites do repositório.