Udostępnij za pośrednictwem


Limity usługi Git

Azure DevOps Services

Nakładamy limity zasobów na repozytoria Git w usłudze Azure Repos, aby zapewnić niezawodność i dostępność dla wszystkich klientów. Zachowując odpowiednie rozmiary danych i liczbę wypchnięć, możesz oczekiwać lepszego ogólnego środowiska pracy z usługą Git.

Usługa Git uczestniczy w ograniczaniu szybkości wraz z resztą usług Azure DevOps Services. Ponadto nakładamy limity całkowitego rozmiaru repozytoriów, wypychania oraz długości ścieżek plików i katalogów.

Rozmiar repozytorium

Repozytoria nie powinny być większe niż 250 GB. Aby pobrać rozmiar repozytorium, wykonaj git count-objects -vH polecenie w wierszu polecenia i poszukaj wpisu o nazwie "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

Zalecamy przechowywanie repozytorium poniżej 10 GB w celu uzyskania optymalnej wydajności. Jeśli repozytorium przekroczy ten rozmiar, rozważ użycie usługi Git-LFS, skalarnej lub usługi Azure Artifacts do zarządzania artefaktami deweloperskich.

Usługa Azure Repos stale zmniejsza całkowity rozmiar i zwiększa wydajność repozytoriów Git, konsolidując podobne pliki w pakiety. W przypadku repozytoriów zbliżających się do 250 GB można osiągnąć wewnętrzny limit plików pakietów przed zakończeniem procesu optymalizacji. Po osiągnięciu tego limitu użytkownicy próbujący zapisać w repozytorium widzą następujący komunikat o błędzie: "Osiągnięto limit plików pakietu Git, operacje zapisu są tymczasowo niedostępne podczas aktualizowania repozytorium". Operacje zapisu są przywracane natychmiast po zakończeniu zadania optymalizacji.

Pliki nie powinny być większe niż 100 MB. Ten limit pomaga zapewnić optymalną wydajność i niezawodność repozytorium Git. Duże pliki mogą znacznie spowalniać operacje repozytorium, takie jak klonowanie, pobieranie i wypychanie zmian. Jeśli musisz przechowywać duże pliki, rozważ użycie usługi Git LFS (duży magazyn plików), który jest przeznaczony do wydajnego obsługi dużych plików przez przechowywanie ich poza głównym repozytorium i przechowywanie tylko odwołań do nich w repozytorium. Takie podejście pomaga zachować wydajność i możliwość zarządzania repozytorium Git.

Rozmiar wypychania

Duże wypychania zużywają znaczne zasoby, blokują lub spowalniają inne części usługi. Te wypychania często nie są zgodne z typowymi działaniami tworzenia oprogramowania i mogą zawierać elementy, takie jak dane wyjściowe kompilacji lub obrazy maszyn wirtualnych. W związku z tym wypychania są ograniczone do 5 GB jednocześnie.

Istnieje jeden wyjątek, w którym duże wypychania są normalne: migrowanie repozytorium z innej usługi do usługi Azure Repos. Takie migracje są dostarczane jako pojedyncze wypychanie i nie zamierzamy blokować importu, nawet w przypadku dużych repozytoriów. Jeśli repozytorium przekroczy 5 GB, musisz użyć sieci Web, aby zaimportować repozytorium zamiast wiersza polecenia.

Rozmiar wypychania dla obiektów LFS

Usługa Git LFS nie liczy się do limitu 5 GB repozytorium. Limit 5 GB dotyczy tylko plików w rzeczywistym repozytorium, a nie obiektów blob przechowywanych w LFS. Jeśli napotkasz nieudane wypchnięcia z powodu limitu 5 GB, upewnij się, że .gitattributes plik zawiera rozszerzenia plików, które mają być śledzone za pomocą LFS. Upewnij się, że ten plik jest zapisywany i przygotowany przed przygotowaniem dużych plików do śledzenia.

Długość ścieżki

Usługa Azure Repos wymusza zasady wypychania, które ograniczają długość ścieżek w repozytorium Git, odrzucając wypychania, które wprowadzają zbyt długie ścieżki. W przeciwieństwie do zasad Maksymalna długość ścieżki nie można jej wyłączyć ani zastąpić, ponieważ wymusza maksymalne wartości obsługiwane przez naszą platformę.

Wymuszane są następujące limity:

  • Łączna długość ścieżki: 32 766 znaków
  • Długość składnika ścieżki (nazwa folderu lub pliku): 4096 znaków

Te zasady dotyczą tylko nowo wprowadzonych ścieżek w wypychaniu. Nie ma zastosowania w przypadku zmiany istniejącego pliku, ale ma zastosowanie w przypadku utworzenia nowego pliku, zmiany nazwy lub przeniesienia istniejącego pliku.

Jeśli jakiekolwiek wypchnięte zatwierdzenia wprowadzają ścieżki, które przekraczają te limity, wypychanie zostanie odrzucone z jednym z następujących komunikatów o błędach:

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