Veröffentlichung des Quelltextverwaltungssystems Git 2.38

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

60GB SSD 8Gb DDR4