Omezení Gitu

Azure DevOps Services

Pro úložiště Git v Azure Repos zavádíme několik omezení prostředků. Naším cílem je zajistit spolehlivost a dostupnost pro všechny zákazníky. Díky zachování přiměřeného množství dat a počtu nabízených oznámení můžete také očekávat lepší celkovou zkušenost se systémem Git.

Git se spolu se zbytkem Azure DevOps Services podílí na omezování rychlosti. Kromě toho omezujeme celkovou velikost úložišť, nabízených oznámení a délku cest k souborům a adresářům.

Velikost úložiště

Úložiště by neměla být větší než 250 GB. Pokud chcete načíst velikost úložiště, spusťte na příkazovém řádku příkaz "git count-objects -vH" a vyhledejte položku s názvem "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

Pro optimální provoz doporučujeme ponechat úložiště pod 10 GB. Pokud vaše úložiště překračuje tuto velikost, zvažte použití Git-LFS, Scalar nebo Azure Artifacts k refaktoringu vývojových artefaktů.

Azure Repos průběžně snižuje celkovou velikost a zvyšuje efektivitu úložišť Git sloučením podobných souborů do balíčků. U úložišť blížících se 250 GB je možné před dokončením procesu optimalizace dosáhnout interního limitu pro soubory balíčků. Každému uživateli, který se pokouší zapsat do úložiště, se zobrazí následující chybová zpráva: "Bylo dosaženo limitu souboru sady Git Pack, operace zápisu jsou během aktualizace úložiště dočasně nedostupné." Operace zápisu se obnoví okamžitě po dokončení úlohy.

Velikost nabízeného oznámení

Velká nabízená oznámení využívají mnoho prostředků a blokují nebo zpomalují jiné části služby. Taková nabízená oznámení se často nemapuje na běžné aktivity vývoje softwaru. Někdo může například neúmyslně vrátit se změnami výstupy sestavení nebo image virtuálního počítače. Z těchto a dalších důvodů jsou nabízená oznámení omezena na 5 GB najednou.

Existuje jedna výjimka, kdy jsou velká nabízená oznámení normální. Když migrujete úložiště z jiné služby do Azure Repos, zobrazí se jako jedno nabízené oznámení. Nemáme v úmyslu blokovat importy, a to ani u velmi velkých úložišť. Pokud je úložiště větší než 5 GB, musíte k importu úložiště použít web místo příkazového řádku.

Velikost vložení pro objekty LFS

Git LFS se nezapočítává do limitu 5 GB úložiště. Limit 5 GB platí jenom pro soubory ve skutečném úložišti, nikoli pro objekty blob uložené jako součást služby LFS. Pokud dojde k selhání nabízených oznámení na 5 GB limitu, ověřte, že soubor .gitattributes obsahuje přípony souborů, které chcete sledovat pomocí LFS, a ověřte, že tento soubor byl uložen a připraven před tím, než jste zfázovali velké soubory, které chcete sledovat.

Délka cesty

Azure Repos má zásadu nabízení, která omezuje délku cest v úložišti Git tím, že odmítá nabízená oznámení, která zavádějí příliš dlouhé cesty. Na rozdíl od zásad maximální délky cesty neexistuje způsob, jak tuto zásadu zakázat nebo přepsat jiným limitem, protože vynucují maximální možné hodnoty podporované naší platformou.

Vynucují se dvě omezení:

  • Celková délka cesty: 32 766 znaků
  • Délka komponenty cesty (to znamená název složky nebo souboru): 4096 znaků

Ovlivňuje pouze nově zavedené cesty při nasdílení změn. Pokud změníte existující soubor, nepoužije se. Pokud ale vytvoříte nový soubor nebo přejmenujete nebo přesunete existující soubor, bude to platit.

Pokud některá z nabízených potvrzení zavádějí cesty, které překračují limity, je nabízení odmítnuto s některou z následujících chybových zpráv:

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