Entwicklung & Code
Git 2.53 macht große Repositories handlicher
Mit Git 2.53 steht eine neue Version des verteilten Versionsverwaltungssystems bereit. Der Fokus liegt vor allem auf Verbesserungen beim Umgang mit großen Repositorys sowie auf Überarbeitungen an bestehenden Werkzeugen.
Weiterlesen nach der Anzeige
Geometrisches Repacking und Partial Clones
Git 2.53 behebt eine lange bestehende Einschränkung beim sogenannten geometrischen Repacking. Dabei organisiert Git Objekte nicht in einer einzigen großen Packdatei, sondern verteilt sie auf mehrere Packfiles unterschiedlicher Größe. Ziel ist es, Repacking‑Vorgänge zu beschleunigen, insbesondere in großen Repositories, in denen das vollständige Neuverpacken aller Objekte viel Zeit in Anspruch nehmen kann.
Bislang war diese Strategie nicht mit Partial Clones kompatibel – also mit Repository‑Kopien, bei denen Git zunächst nur einen Teil der Daten herunterlädt und fehlende Inhalte später bei Bedarf nachlädt. Solche Repositories enthalten sogenannte Promisor‑Packfiles, die auf noch nicht vorhandene Objekte verweisen. Git 2.53 behandelt diese Packfiles nun separat und erhält ihre Kennzeichnung auch beim geometrischen Repacking. Damit lässt sich die effizientere Repacking‑Strategie erstmals auch in Partial‑Clone‑Umgebungen einsetzen.
Feinerer Umgang mit Signaturen in git-fast-import
Git 2.53 erweitert das Werkzeug git-fast-import, das Entwicklerinnen und Entwickler vor allem für den schnellen Import großer Datenmengen und zum Umschreiben von Repository‑Historien nutzen. Solche Massenänderungen kommen etwa beim Einsatz von Werkzeugen wie git‑filter‑repo zum Einsatz, die gezielt Teile der Commit‑Historie verändern.
Neu ist ein zusätzlicher Modus für den Umgang mit kryptografischen Signaturen. Bisher konnte git-fast-import Signaturen mit der Option --signed-commits= nur vollständig beibehalten oder vollständig entfernen. Sobald Entwickler nur einen Teil der Historie umschrieben, verloren zwar die betroffenen Commits ihre Signaturgültigkeit, Git entfernte laut Blogbeitrag von GitLab jedoch auch die weiterhin gültigen Signaturen unveränderter Commits. Mit Git 2.53 führt git-fast-import den neuen Modus strip-if-invalid ein. Er entfernt Signaturen nur dann, wenn sie durch eine Umschreibung tatsächlich ungültig werden, und erhält gültige Signaturen unveränderter Commits. Damit schafft Git eine wichtige Voraussetzung, um Signaturen bei der automatisierten Historienbearbeitung gezielt zu bewahren.
Weiterlesen nach der Anzeige
Erweiterte Analysefunktionen für Repository-Strukturen
Seit Git 2.52 liefert das Unterkommando git repo structure Einblicke in den Aufbau eines Repositorys. In Git 2.53 baut das Projekt diese Analysefunktion weiter aus und ergänzt zusätzliche Kennzahlen, mit denen sich große Repositorys genauer untersuchen lassen.
Das Kommando ermittelt auch die Gesamtgröße erreichbarer Objekte. Git weist dabei sowohl die unkomprimierte Größe als auch den tatsächlichen Speicherbedarf auf dem Datenträger aus und gliedert die Werte nach Objekttypen.
$ git repo structure
| Repository structure | Value |
| -------------------- | ---------- |
| * References | |
| * Count | 1.78 k |
| * Branches | 5 |
| * Tags | 1.03 k |
| * Remotes | 749 |
| * Others | 0 |
| | |
| * Reachable objects | |
| * Count | 421.37 k |
| * Commits | 88.03 k |
| * Trees | 169.95 k |
| * Blobs | 162.40 k |
| * Tags | 994 |
| * Inflated size | 7.61 GiB |
| * Commits | 60.95 MiB |
| * Trees | 2.44 GiB |
| * Blobs | 5.11 GiB |
| * Tags | 731.73 KiB |
| * Disk size | 301.50 MiB |
| * Commits | 33.57 MiB |
| * Trees | 77.92 MiB |
| * Blobs | 189.44 MiB |
| * Tags | 578.13 KiB |
Die erweiterten Ausgaben sollen helfen, Größe und potenzielle Performance-Eigenschaften eines Repositorys besser einzuschätzen – insbesondere bei sehr umfangreichen Codebasen.
Lesen Sie auch
(mdo)