Git-Grenzwerte

Azure DevOps Services

Wir erzwingen einige Ressourcenlimits für Git-Repositorys in Azure Repos. Unser Ziel ist es, Zuverlässigkeit und Verfügbarkeit für alle Kunden sicherzustellen. Durch eine angemessene Beschränkung der Datenmenge und Anzahl von Pushvorgängen können Sie zudem ein insgesamt besseres Git-Erlebnis sicherstellen.

Git ist zusammen mit dem Rest der Azure DevOps Services an der Ratenbegrenzung beteiligt. Darüber hinaus werden Grenzwerte für die Gesamtgröße von Repositorys, Pushvorgängen und die Länge der Datei- und Verzeichnispfade festgelegt.

Repositorygröße

Repositorys sollten nicht größer als 250 GB sein. Führen Sie zum Abrufen der Größe Ihres Repositorys „git count-objects -vH“ in einer Eingabeaufforderung aus, und suchen Sie nach dem Eintrag „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

Es wird empfohlen, Ihr Repository für einen optimalen Betrieb unter 10 GB zu halten. Wenn Ihr Repository diese Größe überschreitet, sollten Sie Git-LFS, Skalar oder Azure Artifacts verwenden, um Ihre Entwicklungsartefakte umzugestalten.

Azure Repos reduziert kontinuierlich die Gesamtgröße und erhöht die Effizienz von Git-Repositorys, indem ähnliche Dateien in Paketen konsolidiert werden. Bei Repositorys, die sich 250 GB nähern, kann der interne Grenzwert für Paketdateien erreicht werden, bevor der Optimierungsprozess abgeschlossen ist. Jedem Benutzer, der versucht, in das Repository zu schreiben, wird die folgende Fehlermeldung angezeigt: "Das Git-Paketdateilimit wurde erreicht, Schreibvorgänge sind vorübergehend nicht verfügbar, während das Repository aktualisiert wird." Schreibvorgänge werden sofort nach Abschluss des Auftrags wiederhergestellt.

Pushgröße

Große Pushvorgänge verbrauchen viele Ressourcen und blockieren oder verlangsamen andere Teile des Diensts. Solche Pushvorgänge entsprechen oft nicht den normalen Aktivitäten der Softwareentwicklung. Möglicherweise hat z. B. jemand versehentlich Buildausgaben oder ein VM-Image eingecheckt. Aus diesen und weiteren Gründen sind Pushvorgänge auf 5 GB gleichzeitig beschränkt.

Es gibt eine Ausnahme, bei der große Pushvorgänge normal sind. Wenn Sie ein Repository aus einem anderen Dienst zu Azure Repos migrieren, wird es in einem einzelnen Pushvorgang übertragen. Wir haben nicht die Absicht, Importe zu blockieren, auch nicht von sehr großen Repositorys. Wenn das Repository größer als 5 GB ist, müssen Sie das Web verwenden, um das Repository anstelle der Befehlszeile zu importieren.

Pushgröße für LFS-Objekte

Git LFS wird nicht auf das Repositorylimit von 5 GB angerechnet. Der Grenzwert von 5 GB gilt nur für Dateien im tatsächlichen Repository, nicht für Blobs, die im Rahmen von LFS gespeichert sind. Wenn sie bei der 5-GB-Grenze fehlerhafte Pushvorgänge erhalten, überprüfen Sie, ob Ihre .gitattributes Datei die Erweiterungen der Dateien enthält, die Sie mithilfe von LFS nachverfolgen möchten, und dass diese Datei gespeichert und bereitgestellt wurde, bevor Sie die großen Dateien bereitgestellt haben, die nachverfolgt werden sollen.

Pfadlänge

Azure Repos verfügt über eine Pushrichtlinie, die die Länge von Pfaden in einem Git-Repository begrenzt, indem Pushvorgänge abgelehnt werden, die zu lange Pfade einführen. Im Gegensatz zur Richtlinie für maximale Pfadlänge gibt es keine Möglichkeit, diese Richtlinie mit einem anderen Grenzwert zu deaktivieren oder zu überschreiben, da sie die maximal möglichen Werte erzwingt, die von unserer Plattform unterstützt werden.

Es werden zwei Grenzwerte erzwungen:

  • Gesamtlänge des Pfads: 32.766 Zeichen
  • Länge der Pfadkomponente (d. r. Ordner- oder Dateiname): 4096 Zeichen

Dies wirkt sich nur auf neu eingeführte Pfade in einem Pushvorgang aus. Wenn Sie eine vorhandene Datei ändern, gilt sie nicht. Wenn Sie jedoch eine neue Datei erstellen oder eine vorhandene umbenennen oder verschieben, gilt sie.

Wenn einige der commits, die gepusht werden, Pfade einführen, die die Grenzwerte überschreiten, wird der Pushvorgang mit einer der folgenden Fehlermeldungen abgelehnt:

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