Condividi tramite


Limiti git

Servizi di Azure DevOps

I limiti delle risorse vengono imposti nei repository Git in Azure Repos per garantire affidabilità e disponibilità per tutti i clienti. Mantenendo le dimensioni dei dati e il numero di push ragionevoli, è possibile prevedere un'esperienza complessiva migliore con Git.

Git partecipa alla limitazione della frequenza insieme al resto di Azure DevOps Services. Vengono inoltre imposti limiti sulle dimensioni totali dei repository, dei push e della lunghezza dei percorsi di file e directory.

Dimensioni repository

I repository non devono superare i 250 GB. Per recuperare le dimensioni del repository, eseguire git count-objects -vH in un prompt dei comandi e cercare la voce denominata "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

È consigliabile mantenere il repository inferiore a 10 GB per ottenere prestazioni ottimali. Se il repository supera queste dimensioni, è consigliabile usare Git-LFS, Scalar o Azure Artifacts per gestire gli artefatti di sviluppo.

Azure Repos riduce continuamente le dimensioni complessive e aumenta l'efficienza dei repository Git consolidando file simili in pacchetti. Per i repository che si avvicinano a 250 GB, è possibile raggiungere il limite interno per i file pack prima del completamento del processo di ottimizzazione. Quando viene raggiunto questo limite, gli utenti che tentano di scrivere nel repository visualizzano il messaggio di errore seguente: "È stato raggiunto il limite di file di Git Pack, le operazioni di scrittura sono temporaneamente non disponibili durante l'aggiornamento del repository". Le operazioni di scrittura vengono ripristinate immediatamente dopo il completamento del processo di ottimizzazione.

I file non devono superare i 100 MB. Questo limite consente di garantire prestazioni e affidabilità ottimali del repository Git. I file di grandi dimensioni possono rallentare significativamente le operazioni del repository, ad esempio la clonazione, il recupero e il push delle modifiche. Se è necessario archiviare file di grandi dimensioni, è consigliabile usare Git LFS (Archiviazione file di grandi dimensioni), progettato per gestire in modo efficiente file di grandi dimensioni archiviandoli all'esterno del repository principale e mantenendo solo i riferimenti a essi all'interno del repository. Questo approccio consente di mantenere le prestazioni e la gestibilità del repository Git.

Dimensioni push

I push di grandi dimensioni utilizzano risorse significative, bloccando o rallentando altre parti del servizio. Questi push spesso non sono allineati alle attività di sviluppo software tipiche e possono includere elementi come output di compilazione o immagini di macchine virtuali. Pertanto, le push sono limitate a 5 GB alla volta.

Esiste un'eccezione in cui i push di grandi dimensioni sono normali: la migrazione di un repository da un altro servizio in Azure Repos. Tali migrazioni sono disponibili come un singolo push e non si prevede di bloccare le importazioni, anche per repository di grandi dimensioni. Se il repository supera i 5 GB, è necessario usare il Web per importare il repository anziché la riga di comando.

Dimensioni push per oggetti LFS

Git LFS non viene conteggiato per il limite di repository da 5 GB. Il limite di 5 GB si applica solo ai file nel repository effettivo, non ai BLOB archiviati con LFS. Se si verificano errori di push a causa del limite di 5 GB, assicurarsi che il .gitattributes file includa le estensioni dei file che si intende tenere traccia con LFS. Assicurarsi che questo file venga salvato e sottoposto a staging prima di eseguire il rilevamento dei file di grandi dimensioni.

Lunghezza dei percorsi

Azure Repos applica criteri push che limitano la lunghezza dei percorsi in un repository Git rifiutando i push che introducono percorsi eccessivamente lunghi. A differenza del criterio Lunghezza massima percorso, non è possibile disabilitarlo o eseguirne l'override, in quanto applica i valori massimi supportati dalla piattaforma.

Vengono applicati i limiti seguenti:

  • Lunghezza totale percorso: 32.766 caratteri
  • Lunghezza componente percorso (cartella o nome file): 4.096 caratteri

Questo criterio influisce solo sui percorsi appena introdotti in un push. Non si applica se si modifica un file esistente, ma viene applicato se si crea un nuovo file, si rinomina o ne viene spostato uno esistente.

Se viene eseguito il push di commit introducono percorsi che superano questi limiti, il push viene rifiutato con uno dei messaggi di errore seguenti:

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