Git 2.51 kommt mit wichtigen Leistungsverbesserungen und neuen Funktionen

Git 2.51

Nach zwei Monaten intensiver Arbeit hat die Entwickler-Community von Git stellt Git Version 2.51 vor, ein Update, das Es vereint 506 Änderungen, an denen 91 Entwickler beteiligt waren, davon beteiligten sich 21 zum ersten Mal.

Diese Version führt Verbesserungen ein, die die Leistung steigern und die Repository-Verwaltung vereinfachen sollen, darunter Leistungsoptimierungen für Git-Push und Git-Fetch sowie mehrere Änderungen im Hinblick auf den neuen 3.x-Zweig.

Git 2.51 Highlights

Eines der Highlights von Git 2.51 ist die Optimieren der Befehle „git push“ und „git fetch“ in Repositorien mit einer großen Anzahl von Referenzen. Der Schlüssel zu dieser Verbesserung liegt im Batch-Update, das mehrere Links in einer einzigen Transaktion und nicht einzeln verarbeitet.

Dank dieser Optimierung Das Reftable-Backend übertrifft jetzt das herkömmliche Datei-Backend.Bei Tests mit Repositories mit bis zu 10 Referenzen erhöhte sich die Git-Fetch-Leistung für Reftable um das 000-Fache und für Dateien um das 22-Fache, während sich Git Push um das 1.25-Fache bzw. 18-Fache verbesserte.

Eine weitere wichtige Neuerung ist das iEinführung sogenannter Cruft-Pakete, Entwickelt, um unzugängliche Objekte zu speichern, die nicht mit Zweigen oder Tags verknüpft sind. Diese Objekte, die zuvor verstreut waren, können nun in separaten Verpackungen verwaltet werdens, wodurch sie leichter zu steuern sind und die Größe von Multi-Package-Indizes (MIDX) reduziert wird.

mit dem neue Einstellung repack.MIDXMustContainCruft, Git vermeidet die Aufnahme dieser Objekte in die HauptindizesIn Tests auf GitHub reduzierte diese Konfiguration die Indexgröße um 38 %, beschleunigte Schreibvorgänge um 35 % und verbesserte Lesevorgänge um 5 %.

Neuer Ansatz zur Objektverpackung

El Der Befehl git pack-objects enthält die Option –path-walk, die eine innovative Methode einführt um Verpackungsdateien neu zu organisieren. Anstatt Objekte anhand ihrer Hashes zu verarbeiten, kann Git sie nun anhand ihres Dateipfads durchlaufen und diejenigen, die sich am selben Speicherort befinden, zusammenpacken. Dieser Ansatz macht das Vorsortieren von Objekten überflüssig und führt zu kleineren, effizienteren Packdateien.

Auch mit dieser Version Ein neues Format für den Austausch von Arbeitsbaumzuständen und mit Git Stash erstellten Indizes wurde standardisiert.. Es ist jetzt möglich, Stashes genau wie Zweige oder Tags zu exportieren und zu importieren, wodurch das Verschieben von Zuständen von einem System in ein anderes erleichtert wird.

Zum Beispiel:

git stash export --to-ref refs/stashes/mi-stash git push origin refs/stashes/mi-stash git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash

Verbesserungen an klassischen Befehlen

mehrere Git-Befehle haben relevante Updates erhalten:

  • git cat-file meldet jetzt fehlende Objekte und Untermodule und zeigt Kennungen an, anstatt nur „fehlend“ zu markieren.
  • Git Log profitiert von Bloom-Filteroptimierungen, die die Suche mit mehreren Dateipfaden beschleunigen.
  • Die Befehle „Git Switch“ und „Git Restore“, die seit 2019 als experimentell gelten, sind nun endlich als moderne Alternativen zu „Git Checkout“ stabilisiert.
  • Der Befehl „git whatchanged“, der äquivalent zu „git log –raw“ ist, ist veraltet und wird in Git 3.0 entfernt.
  • git for-each-ref erhält die Option –start-after, die zusammen mit –count die Paginierung der Ausgabe ermöglicht.
  • git merge und git pull enthalten jetzt die Option –compact-summary, die ein prägnanteres Zusammenfassungsformat bietet.

C99-Unterstützung und neue Beitragsregeln

Git passt seinen Code weiterhin an die Eigenschaften des C9-Standards an9. Obwohl seit 2021 ein kompatibler Compiler erforderlich ist, gehen Entwickler vorsichtig vor, um die Kompatibilität mit Compilern aufrechtzuerhalten, die ihn nur teilweise implementieren.

Darüber hinaus wurde eine wesentliche Änderung in der Beitragspolitik eingeführt: Patches können nun unter Pseudonym eingereicht werden, eine Entscheidung, die mit den Regeln des Linux-Kernels übereinstimmt und den Mitwirkenden mehr Flexibilität bieten soll.

Ausblick auf Git 3.0

El Das Entwicklungsteam hat außerdem die Roadmap auf Git 3.0 aktualisiert., wobei zwei wichtige Änderungen hervorstechen: die standardmäßige Verwendung von SHA-256 als Objektkennung und die Einführung des Reftable-Formats zum Speichern von Branch- und Tag-Referenzen. Diese Verbesserungen zielen darauf ab, die Sicherheit und Effizienz in immer größeren und komplexeren Repositories zu verbessern.

Quelle: https://lore.kernel.org