Partage via


Limites Git

Azure DevOps Services

Nous imposons quelques limites de ressources aux dépôts Git dans Azure Repos. Notre objectif est de garantir la fiabilité et la disponibilité du service pour tous les clients. Par ailleurs, le maintien d’une quantité raisonnable de données et d’envois (push) vous assure une meilleure expérience globale avec Git.

Git participe à la limitation de débit avec le reste de Azure DevOps Services. En outre, nous imposons des limites à la taille totale des dépôts, aux envois push et à la longueur des chemins de fichiers et de répertoires.

Taille des dépôts

Les dépôts ne doivent pas dépasser 250 Go. Pour récupérer la taille de votre référentiel, exécutez « git count-objects -vH » dans une invite de commandes et recherchez l’entrée appelée « 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

Nous vous recommandons de maintenir votre dépôt en dessous de 10 Go pour un fonctionnement optimal. Si votre dépôt dépasse cette taille, envisagez d’utiliser Git-LFS, Scalar ou Azure Artifacts pour refactoriser vos artefacts de développement.

Azure Repos réduit continuellement la taille globale et augmente l’efficacité des dépôts Git en consolidant des fichiers similaires en packs. Pour les référentiels proches de 250 Go, la limite interne des fichiers pack peut être atteinte avant la fin du processus d’optimisation. Tout utilisateur qui tente d’écrire dans le dépôt voit le message d’erreur suivant : « La limite de fichier de pack Git a été atteinte, les opérations d’écriture sont temporairement indisponibles pendant la mise à jour du dépôt ». Les opérations d’écriture sont restaurées immédiatement après la fin du travail.

Taille d’envoi

Les pushs volumineux utilisent beaucoup de ressources, bloquant ou ralentissant d’autres parties du service. Ces envois ne correspondent souvent pas aux activités normales de développement de logiciels. Une personne peut avoir coché par inadvertance les sorties de build ou une image de machine virtuelle, par exemple. Pour ces raisons et bien plus encore, les push sont limités à 5 Go à la fois.

Il existe une exception où les envois volumineux sont normaux. Lorsque vous migrez un référentiel à partir d’un autre service vers Azure Repos, il s’agit d’un envoi unique. Nous n’avons pas l’intention de bloquer les importations, même de référentiels très volumineux. Si le dépôt est supérieur à 5 Go, vous devez utiliser le web pour importer le référentiel au lieu de la ligne de commande.

Taille d’envoi pour les objets LFS

Git LFS ne compte pas pour la limite de dépôt de 5 Go. La limite de 5 Go concerne uniquement les fichiers du référentiel réel, et non les objets blob stockés dans le cadre de LFS. Si vous obtenez des envois push défaillants sur la limite de 5 Go, vérifiez que votre .gitattributes fichier inclut les extensions des fichiers que vous voulez suivre à l’aide de LFS et que ce fichier a été enregistré et intermédiaire avant d’effectuer le suivi des fichiers volumineux.

Longueur des chemins d'accès

Azure Repos a une stratégie push qui limite la longueur des chemins d’accès dans un dépôt Git en rejetant les pushs qui introduisent des chemins d’accès trop longs. Contrairement à la stratégie Longueur maximale du chemin d’accès, il n’existe aucun moyen de désactiver ou de remplacer cette stratégie avec une autre limite, car elle applique les valeurs maximales possibles prises en charge par notre plateforme.

Deux limites sont appliquées :

  • Longueur totale du chemin : 32 766 caractères
  • Longueur du composant de chemin d’accès (c’est-à-dire, nom du dossier ou du fichier) : 4 096 caractères

Elle affecte uniquement les chemins d’accès nouvellement introduits dans un push. Si vous modifiez un fichier existant, il ne s’applique pas. Toutefois, si vous créez un fichier ou si vous renommez ou déplacez un fichier existant, il s’applique.

Si certains des commits en cours d’envoi (push) introduisent des chemins qui dépassent les limites, l’envoi est rejeté avec l’un des messages d’erreur suivants :

  • 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.