Dela via


Git-gränser

Azure DevOps Services

Vi inför resursbegränsningar på Git-lagringsplatser i Azure Repos för att säkerställa tillförlitlighet och tillgänglighet för alla kunder. Genom att hålla datastorlekar och antalet push-meddelanden rimliga kan du förvänta dig en bättre övergripande upplevelse med Git.

Git deltar i hastighetsbegränsning tillsammans med resten av Azure DevOps Services. Dessutom inför vi gränser för den totala storleken på lagringsplatser, push-meddelanden och längden på fil- och katalogsökvägar.

Lagringsplatsstorlek

Lagringsplatser får inte vara större än 250 GB. Om du vill hämta storleken på lagringsplatsen kör git count-objects -vH du i en kommandotolk och letar efter posten "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

Vi rekommenderar att du håller lagringsplatsen under 10 GB för optimala prestanda. Om lagringsplatsen överskrider den här storleken bör du överväga att använda Git-LFS, Scalar eller Azure Artifacts för att hantera utvecklingsartefakter.

Azure Repos minskar kontinuerligt den totala storleken och ökar effektiviteten för Git-lagringsplatser genom att konsolidera liknande filer i paket. För lagringsplatser som närmar sig 250 GB kan den interna gränsen för paketfiler nås innan optimeringsprocessen är klar. När den här gränsen har nåtts ser användare som försöker skriva till lagringsplatsen följande felmeddelande: "Filgränsen för Git-paket har nåtts, skrivåtgärder är tillfälligt otillgängliga medan lagringsplatsen uppdateras." Skrivåtgärder återställs omedelbart när optimeringsjobbet har slutförts.

Filerna får inte vara större än 100 MB. Den här gränsen säkerställer optimala prestanda och tillförlitlighet för Git-lagringsplatsen. Stora filer kan avsevärt göra lagringsplatsen långsammare, till exempel kloning, hämtning och push-överföring av ändringar. Om du behöver lagra stora filer bör du överväga att använda Git LFS (Large File Storage), som är utformat för att hantera stora filer effektivt genom att lagra dem utanför huvudlagringsplatsen och endast behålla referenser till dem på lagringsplatsen. Den här metoden hjälper till att upprätthålla prestanda och hanterbarhet för din Git-lagringsplats.

Push-storlek

Stora push-enheter förbrukar betydande resurser, blockerar eller saktar ned andra delar av tjänsten. Dessa push-överföringar överensstämmer ofta inte med vanliga programutvecklingsaktiviteter och kan innehålla objekt som build-utdata eller VM-avbildningar. Därför är push-överföring begränsad till 5 GB åt gången.

Det finns ett undantag där stora push-överföringar är normala: migrera en lagringsplats från en annan tjänst till Azure Repos. Sådana migreringar kommer in som en enda push-överföring och vi tänker inte blockera importer, inte ens för stora lagringsplatser. Om lagringsplatsen överskrider 5 GB måste du använda webben för att importera lagringsplatsen i stället för kommandoraden.

Push-storlek för LFS-objekt

Git LFS räknas inte mot lagringsgränsen på 5 GB. Gränsen på 5 GB gäller endast för filer i den faktiska lagringsplatsen, inte för blobar som lagras med LFS. Om du stöter på misslyckade push-överföringar på grund av gränsen på 5 GB kontrollerar .gitattributes du att filen innehåller filnamnstilläggen för de filer som du tänker spåra med LFS. Se till att den här filen sparas och mellanlagras innan du mellanlagra de stora filer som ska spåras.

Sökvägslängd

Azure Repos tillämpar en push-princip som begränsar längden på sökvägar i en Git-lagringsplats genom att avvisa push-push-meddelanden som introducerar alltför långa sökvägar. Till skillnad från principen Maximal sökvägslängd kan du inte inaktivera eller åsidosätta den eftersom den tillämpar de högsta värden som stöds av vår plattform.

Följande begränsningar tillämpas:

  • Total sökvägslängd: 32 766 tecken
  • Sökvägskomponentens längd (mapp eller filnamn): 4 096 tecken

Den här principen påverkar endast nyligen introducerade sökvägar i en push-överföring. Den gäller inte om du ändrar en befintlig fil, men den gäller om du skapar en ny fil, byter namn på eller flyttar en befintlig fil.

Om incheckningar som skickas introducerar sökvägar som överskrider dessa gränser avvisas push-överföringen med något av följande felmeddelanden:

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