Omezení Gitu

Služby Azure DevOps

Pro úložiště Git v Azure Repos ukládáme omezení prostředků, abychom zajistili spolehlivost a dostupnost pro všechny zákazníky. Díky zachování velikosti dat a počtu nabízených oznámení můžete očekávat lepší celkové zkušenosti s Gitem.

Git se účastní omezování rychlosti spolu se zbytkem azure DevOps Services. Kromě toho platí omezení celkové velikosti úložišť, nabízených oznámení a délky 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 git count-objects -vH ho na příkazovém řádku 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 zajištění optimálního výkonu doporučujeme zachovat úložiště nižší než 10 GB. Pokud úložiště překračuje tuto velikost, zvažte použití Git-LFS, Scalar nebo Azure Artifacts ke správě vývojových artefaktů.

Azure Repos nepřetržitě snižuje celkovou velikost a zvyšuje efektivitu úložišť Git sloučením podobných souborů do balíčků. V případě úložišť, která se blíží 250 GB, je možné dosáhnout interního limitu souborů balíčku před dokončením procesu optimalizace. Po dosažení tohoto limitu se uživatelům, kteří se pokoušejí zapisovat do úložiště, uvidí následující chybovou zprávu: Došlo k dosažení limitu souborů sady Git, operace zápisu jsou během aktualizace úložiště dočasně nedostupné. Operace zápisu se obnoví okamžitě po dokončení úlohy optimalizace.

Soubory nesmí být větší než 100 MB. Tento limit pomáhá zajistit optimální výkon a spolehlivost úložiště Git. Velké soubory můžou výrazně zpomalit operace úložiště, jako je klonování, načítání a nasdílení změn. Pokud potřebujete ukládat velké soubory, zvažte použití gitu LFS (Large File Storage), který je navržený tak, aby efektivně zpracovával velké soubory tím, že je ukládá mimo hlavní úložiště a udržuje na ně odkazy jenom v rámci úložiště. Tento přístup pomáhá udržovat výkon a spravovatelnost úložiště Git.

Velikost nabízení

Velké nabízení spotřebovávají významné prostředky, blokují nebo zpomalují jiné části služby. Tyto nabízení často nejsou v souladu s typickými aktivitami vývoje softwaru a můžou zahrnovat položky, jako jsou výstupy sestavení nebo image virtuálních počítačů. Nabízení se proto omezuje na 5 GB najednou.

Existuje jedna výjimka, kdy jsou velké nabízení normální: migrace úložiště z jiné služby do Azure Repos. Takové migrace přicházejí jako jedna nabízená oznámení a nemáme v úmyslu blokovat importy, a to ani pro velká úložiště. Pokud úložiště překračuje 5 GB, musíte místo příkazového řádku použít web k importu úložiště .

Velikost zápisu pro objekty LFS

Git LFS se nezapočítává do limitu úložiště o velikosti 5 GB. Limit 5 GB se vztahuje pouze na soubory ve skutečném úložišti, ne na objekty blob uložené se službou LFS. Pokud narazíte na neúspěšné nabízení z důvodu limitu 5 GB, ujistěte se, že váš .gitattributes soubor obsahuje přípony souborů, které chcete sledovat pomocí LFS. Před přípravou velkých souborů, které se mají sledovat, se ujistěte, že je tento soubor uložený a připravený.

Délka cesty

Azure Repos vynucuje zásadu nabízení, která omezuje délku cest v úložišti Git tím, že odmítne nabízená oznámení, která zavádějí příliš dlouhé cesty. Na rozdíl od zásad maximální délky cesty ji nemůžete zakázat ani přepsat, protože vynucuje maximální hodnoty podporované naší platformou.

Vynucují se následující omezení:

  • Celková délka cesty: 32 766 znaků
  • Délka součásti cesty (název složky nebo souboru): 4 096 znaků

Tato zásada má vliv jenom na nově zavedené cesty v nabízeném oznámení. Nepoužije se, pokud změníte existující soubor, ale použije se, pokud vytvoříte nový soubor, přejmenujete nebo přesunete existující soubor.

Pokud všechna potvrzení, která se odsílají, zavádí cesty, které překračují tato omezení, nabízení se odmítne s jednou 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.