Die Veröffentlichung des verteilten Systems zur Verwaltung von Quelltexten Git 2.38 wurde vorgestellt. Git ist eines der bekanntesten, zuverlĂ€ssigsten und leistungsstĂ€rksten Versionsverwaltungssysteme, das flexible Werkzeuge fĂŒr die nichtlineare Entwicklung bietet, die auf Branching und Merging basieren. Um die IntegritĂ€t der Historie und die Robustheit gegenĂŒber rĂŒckwirkenden Ănderungen zu gewĂ€hrleisten, wird das implizite Hashing der gesamten vorherigen Historie in jedem Commit verwendet. Auch die digitale Signatur einzelner Tags und Commits durch Entwickler ist möglich.
Im Vergleich zur vorherigen Version wurden in die neue Version 699 Ănderungen aufgenommen, die mit der Beteiligung von 92 Entwicklern vorbereitet wurden, von denen 24 zum ersten Mal an der Entwicklung teilgenommen haben. Die wichtigsten Neuerungen:
- Die Hauptkomponente ist das von Microsoft entwickelte Tool âscalarâ, das zur Verwaltung groĂer Repositories dient. UrsprĂŒnglich wurde das Tool in C# geschrieben, aber es wurde eine ĂŒberarbeitete Version in C aufgenommen. Das neue Tool unterscheidet sich von den git-Befehlen durch die standardmĂ€Ăige Integration zusĂ€tzlicher Funktionen und Einstellungen, die die Leistung beim Arbeiten mit sehr groĂen Repositories beeinflussen. Zum Beispiel verwendet scalar:
- Teilweises Klonen fĂŒr die Arbeit mit einer unvollstĂ€ndigen Kopie des Repositories.
- Ein integrierter Mechanismus zur Ăberwachung von Ănderungen im Dateisystem (FSMonitor), der das Durchsuchen des gesamten Arbeitsverzeichnisses ĂŒberflĂŒssig macht.
- Indizes, die Objekte in verschiedenen Pack-Dateien umfassen (Multi-Pack).
- Commit-Graph-Dateien mit einem Index des Commit-Graphs, der verwendet wird, um den Zugriff auf Informationen zu Commits zu optimieren.
- Hintergrundarbeit fĂŒr die Aufrechterhaltung einer optimalen Struktur des Repositories im Hintergrund, ohne die interaktive Sitzung zu blockieren (einmal pro Stunde wird eine vorzeitige Aktualisierung neuer Objekte aus dem Remote-Repository und die Aktualisierung der Datei mit dem Commit-Graph durchgefĂŒhrt, und jede Nacht wird der Packprozess des Repositories gestartet).
- Der Modus âsparseCheckoutConeâ, der die zulĂ€ssigen Muster beim partiellen Klonen einschrĂ€nkt.
- Im Befehl âgit rebaseâ wurde die Option ââupdate-refsâ hinzugefĂŒgt, um abhĂ€ngige Branches zu aktualisieren, die sich mit den verschobenen Branches ĂŒberschneiden, damit keine manuellen Checkout-Operationen an jedem abhĂ€ngigen Branch ausgefĂŒhrt werden mĂŒssen, um zu dem gewĂŒnschten Commit zu wechseln.
- Die KompatibilitĂ€t des Befehls âgit rmâ mit partiellen Indizes wurde sichergestellt.
- Das Verhalten des Befehls âgit mv A Bâ wurde verbessert, wenn eine Datei aus dem Arbeitsverzeichnis mit partiellen Indizes in ein externes Verzeichnis im âconeâ-Modus verschoben wird, fĂŒr das dieser Modus nicht angewendet wird.
- Das Format der Bitmap-Dateien wurde optimiert, um mit groĂen Repositories zu arbeiten â eine optionale Indextabelle mit einer Liste der ausgewĂ€hlten Commits und deren Offsets wurde hinzugefĂŒgt.
- Im Befehl âgit merge-treeâ wurde ein neuer Modus implementiert, bei dem auf Basis von zwei angegebenen Commits ein Merge-Ergebnisbaum berechnet wird, als ob die Historien dieser Commits zusammengefĂŒhrt worden wĂ€ren.
- Eine Einstellung âsafe.barerepositoryâ wurde hinzugefĂŒgt, um die Möglichkeit zu steuern, bare Repositories (Repositories, die kein Arbeitsverzeichnis enthalten) innerhalb anderer Git-Repositories zu platzieren. Bei der Einstellung auf âexplicitâ ist die Arbeit mit bare Repositories erlaubt, die nur im Hauptverzeichnis angelegt sind. FĂŒr die Möglichkeit, bare Repositories in Unterverzeichnissen zu platzieren, sollte der Wert âallâ verwendet werden.
- Im Befehl âgit grepâ wurde die Option â-mâ (ââmax-countâ) hinzugefĂŒgt, die der gleichnamigen Option in GNU grep entspricht und es ermöglicht, die Anzahl der ausgegebenen Ăbereinstimmungen zu begrenzen.
- Im Befehl âls-filesâ wurde die Option ââformatâ implementiert, um die ausgegebenen Felder anzupassen (z. B. kann die Ausgabe von Objektname, Modus usw. eingeschlossen werden).
- In âgit cat-fileâ wurde die Möglichkeit implementiert, die Bindungen der Autoren zu E-Mail-Adressen zu berĂŒcksichtigen, die in der Datei mailmap angegeben sind.
Quelle: opennet.ru
