Git 2.36 Version der Quellcodeverwaltung

Nach dreimonatiger Entwicklungszeit wurde das verteilte Versionsverwaltungssystem Git 2.36 veröffentlicht. Git ist eines der beliebtesten, zuverlässigsten und leistungsstärksten Versionskontrollsysteme und bietet flexible nichtlineare Entwicklungstools basierend auf Verzweigung und Zusammenführung. Um die Integrität des Verlaufs und die Widerstandsfähigkeit gegen rückwirkende Änderungen sicherzustellen, wird in jedem Commit ein implizites Hashing des gesamten vorherigen Verlaufs verwendet; es ist auch möglich, einzelne Tags und Commits mit digitalen Signaturen der Entwickler zu zertifizieren.

Im Vergleich zur Vorgängerversion wurden 717 Änderungen in die neue Version übernommen, die unter Beteiligung von 96 Entwicklern erstellt wurde, von denen 26 erstmals an der Entwicklung beteiligt waren. Wichtigste Neuerungen:

  • Die Befehle „git log“ und „git show“ verfügen jetzt über die Option „—remerge-diff“, mit der Sie die Unterschiede zwischen dem Gesamtergebnis der Zusammenführung und den tatsächlichen Daten anzeigen können, die sich im Commit nach der Verarbeitung des Befehls „merge“ widerspiegeln , wodurch Sie die durch die Lösung von Fusionskonflikten vorgenommenen Änderungen klar bewerten können. Der normale Befehl „git show“ rückt die verschiedenen Konfliktlösungen ein, sodass Änderungen schwer verständlich sind. Im Screenshot unten zeigt beispielsweise die Zeile „+/-“ ohne Einrückung die letzte Lösung des Konflikts, der mit der Umbenennung von sha1 in oid im Kommentar im ersten Zweig verbunden ist, und „+/-“ mit Einrückung zeigt den Anfangsbuchstaben Lösung des Konflikts, der durch das Erscheinen eines zusätzlichen Arguments im zweiten Zweig der Funktion dwim_ref() verursacht wurde.
    Git 2.36 Version der Quellcodeverwaltung

    Bei Verwendung der Option „--remerge-diff“ werden die Unterschiede zwischen den Konfliktlösungen nicht für jeden übergeordneten Zweig getrennt angezeigt, sondern es werden die Gesamtunterschiede zwischen der Datei mit Zusammenführungskonflikten und der Datei mit gelösten Konflikten angezeigt.

    Git 2.36 Version der Quellcodeverwaltung

  • Erhöhte Flexibilität bei der Konfiguration des Verhaltens zum Leeren von Festplatten-Caches über einen Aufruf der Funktion fsync(). Der bisher verfügbare Parameter „core.fsyncObjectFiles“ wurde in die beiden Konfigurationsvariablen „core.fsync“ und „core.fsyncMethod“ aufgeteilt und bietet damit die Möglichkeit, fsync nicht nur auf Objektdateien (.git/objects), sondern auch auf andere Git-Strukturen wie Links ( .git /refs), Reflog- und Packdateien.

    Über die Variable core.fsync können Sie eine Liste interner Git-Strukturen angeben, für die fsync nach einem Schreibvorgang zusätzlich aufgerufen wird. Mit der Variable core.fsyncMethod können Sie eine Methode zum Leeren des Caches auswählen. Sie können beispielsweise fsync auswählen, um den gleichnamigen Systemaufruf zu verwenden, oder writeout-only angeben, um das Zurückschreiben des Seitencaches zu verwenden.

  • Zum Schutz vor Schwachstellen, die die Ersetzung von .git-Verzeichnissen durch andere Benutzer in freigegebene Abschnitte manipulieren, wurde die Überprüfung des Repository-Eigentümers verstärkt. Das Ausführen jeglicher Git-Befehle ist jetzt nur noch in ihren eigenen „.git“-Verzeichnissen erlaubt. Wenn das Verzeichnis mit dem Repository einem anderen Benutzer gehört, wird standardmäßig ein Fehler angezeigt. Dieses Verhalten kann mit der Einstellung „safe.directory“ deaktiviert werden.
  • Der Befehl „git cat-file“, der für die Ausgabe des Quellinhalts von Git-Objekten gedacht ist, wurde um die Option „--batch-command“ ergänzt, die die bisher verfügbaren Optionen „--batch“ und „--batch-check“ ergänzt ”-Befehle mit der Möglichkeit, den Ausgabetyp adaptiv auszuwählen, indem „contents <object>“ zum Anzeigen von Inhalten oder „info <object>“ zum Anzeigen von Informationen über das Objekt verwendet wird. Darüber hinaus wird der Befehl „flush“ unterstützt, um den Ausgabepuffer zu leeren.
  • Zum Befehl „git ls-tree“, der zum Generieren einer Liste des Inhalts eines Objektbaums gedacht ist, wurde die Option „—oid-only“ („—object-only“) hinzugefügt, ähnlich wie „—name-only“. “, wobei nur Objektbezeichner angezeigt werden, um den Aufruf aus Skripten zu vereinfachen. Ebenfalls implementiert ist die Option „--format“, mit der Sie Ihr eigenes Ausgabeformat definieren können, indem Sie Informationen zu Modus, Typ, Name und Größe kombinieren.
  • Der Befehl „git bisect run“ implementiert die Erkennung, dass das Flag für ausführbare Dateien für ein Skript nicht gesetzt ist und in diesem Fall Fehler mit den Codes 126 oder 127 angezeigt werden (zuvor wurden alle Revisionen als Probleme markiert, wenn das Skript nicht ausgeführt werden konnte). .
  • Dem Befehl „git fetch“ wurde die Option „--refetch“ hinzugefügt, um alle Objekte abzurufen, ohne die andere Partei über die Inhalte zu informieren, die sich bereits auf dem lokalen System befinden. Dieses Verhalten kann bei der Wiederherstellung nach Fehlern nützlich sein, wenn die Integrität lokaler Daten unsicher ist.
  • Die Befehle „git update-index“, „git checkout-index“, „git read-tree“ und „git clean“ unterstützen jetzt Teilindizes, um die Leistung zu verbessern und Platz in Repositorys zu sparen, die Teilindexoperationen ausführen. Klonen (sparse-checkout ).
  • Das Verhalten des Befehls „git clone —filter=… —recurse-submodules“ wurde geändert, was nun zum teilweisen Klonen von Submodulen führt (zuvor wurde der Filter bei der Ausführung solcher Befehle nur auf den Hauptinhalt angewendet, Submodule jedoch). vollständig geklont werden, ohne den Filter zu berücksichtigen).
  • Der Befehl „git bundle“ bietet nun Unterstützung für die Angabe von Filtern zum selektiven Platzieren von Inhalten, ähnlich wie bei teilweisen Klonvorgängen.
  • Option „--recurse-submodules“ zum Befehl „git branch“ hinzugefügt, um Submodule rekursiv zu durchlaufen.
  • Userdiff bietet einen neuen Handler für die Kotlin-Sprache.

Source: opennet.ru

Kommentar hinzufügen