Vor wenigen Tagen wurde es bekannt gegeben Veröffentlichung der neuen Version des Git 2.50-Projekts, Einführung von mehr als 600 Änderungen angetrieben von einer aktiven Community, die dieses Mal 98 Entwickler umfasste, darunter 35 neue Mitwirkende.
Highlights dieser neuen Version von Git 2.50 sind die Integration neuer Befehle (git-diff-pairs), neue Funktionen zum Bereinigen, Filtern und Warten, der Ersatz der rekursiven Merge-Engine durch ORT sowie Leistungsverbesserungen und Fehlerbehebungen.
Git 2.50 Highlights
In dieser neuen Version von Git 2.50 ist eine der wichtigsten neuen Funktionen die Optimierung bei der Behandlung sogenannter „Cruft Packs“, Das bedeutet, Pakete von Objekten, auf die nicht zugegriffen werden kann oder die nicht durch Zweige oder Tags referenziert werden. Traditionell speicherte Git diese Objekte in einer einzigen, großen Paketdatei, was beim Neuverpacken von Repositories mit vielen dieser Elemente zu Leistungsproblemen führen konnte.
Mit der neuen Version Git ermöglicht es Ihnen, diese Cruft-Pakete in mehrere kleinere Dateien aufzuteilen, was die Festplattennutzung reduziert und die Ein-/Ausgabeleistung für Massenoperationen verbessert. Darüber hinaus sund geben Sie die Option –combine-cruft-below-size ein, was erlaubt kleine Pakete flexibler zu einem Paket zusammenfassen als die vorherige Option –max-cruft-size, ohne die Gesamtdateigröße zu begrenzen. Diese neue Funktion ist besonders nützlich in Projekten mit verwaisten Objekten, die über mehrere Pakete verteilt sind.
Eine weitere Verbesserung für große Endlager ist die experimentelle Unterstützung für die inkrementelle Aktualisierung von MIDX-Indizes welche Sie speichern Informationen über Objekte in separaten Schichten Die Verwendung von Bitmap-Dateien ermöglicht schnellere Updates beim Hinzufügen neuer Commits. Diese Weiterentwicklung ist entscheidend für große Repositories, die schnelle Indexierungsvorgänge erfordern, ohne die Metadaten komplett neu erstellen zu müssen.
Vollständiger Ersatz der rekursiven Merge-Engine durch ORT
Git 2.50 führt eine wichtige Änderung ein mit der dauerhafte Entfernung der rekursiven Fusion-Engine traditionell. Stattdessen die Nutzung von ORT wird konsolidiert, ein modernere, wartungsfreundlichere und effizientere Fusionsmaschine. ORT bietet nicht nur eine präzisere Konfliktanalyse, sondern ermöglicht auch die Überprüfung, ob ein Merge ohne die Generierung zusätzlicher Objekte möglich ist. Darüber hinaus verfügt der Befehl merge-tree nun über die Option –quiet, die einen stillen Merge-Checker ermöglicht, ohne das Repository zu ändern.
gitt-diff-pairs: die Lösung für Skalierbarkeitsprobleme
Code-Reviews sind zweifellos eine der Säulen moderner kollaborativer Entwicklung, und Unterschiede bzw. Diffs zwischen Revisionen spielen dabei eine wichtige Rolle. Mit Git 2.50 wurde eine auf Skalierbarkeit ausgelegte Lösung eingeführt: der neue Befehl git-diff-pairs.
Um einen Vergleich zwischen zwei Revisionen zu erhalten, verwenden Sie traditionell einen Befehl wie:
git diff HEAD~1 HEAD
Dadurch wird ein vollständiger Patch erstellt, der alle Änderungen zwischen den aufgeführten Revisionen enthält. Dies ist zwar in vielen Fällen effektiv, kann aber bei der Verarbeitung großer Mengen geänderter Dateien zu Leistungsproblemen führen.
Aus diesem Grund wurde git-diff-pairs speziell dafür entwickelt, Roheingaben direkt von der Ausgabe von git diff-tree zu empfangen und die entsprechenden Patches effizient und genau zu generieren.
Die Anwendung ist ganz einfach:
git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z
Dieser Befehl verwendet die bereitgestellten Blob-Paare und generiert die exakte Diff-Ausgabe. Dabei bleiben Kontextinformationen erhalten und die Arbeit kann in kleinere Batches aufgeteilt werden. Dies ermöglicht parallele Verarbeitung, verbessert die Ressourceneffizienz und erleichtert die Skalierbarkeit in diff-basierten Tools wie GitLab.
Neue Funktionen für Reinigung, Filterung und Wartung
Git 2.50 enthält mehrere zusätzliche Tools zur Verbesserung der Repository-Wartung:
- Der Befehl wurde hinzugefügt Git Reflog Drop, mit dem Sie das Reflog für einen bestimmten Zweig vollständig löschen können. Dies ist ideal zum Bereinigen Ihres Arbeitsverlaufs, wenn Sie vorherige Referenzen nicht mehr beibehalten müssen.
- Die Wahl -Filter cat-file –batch ist jetzt in Git verfügbar und ermöglicht Ihnen, Ergebnisse nach Objekttyp zu filtern.
Darüber hinaus werden auch mehrere interne Optimierungen hervorgehoben:
- Verbesserte Verwendung symbolischer Links mit Präfix-Caching und Reduzierung redundanter Prüfungen.
- Entfernen von Perl-Abhängigkeiten in Dokumentationen und Testskripten und Ersetzen durch Shell-Funktionen oder C-Implementierungen, wodurch deren Kompilierung auf Systemen mit minimalistischen Konfigurationen erleichtert wird.
- Inklusive Controller Benutzerunterschied zur Analyse von Unterschieden in INI-Dateien.
- Verbesserte Kompatibilität des Befehls „git send-email“ mit SMTP-Servern wie Outlook.
Wenn Sie daran interessiert sind, mehr darüber zu erfahren, können Sie schließlich die Details im einsehen folgenden Link