Git 2.35 Version der Quellcodeverwaltung

Nach zweimonatiger Entwicklungszeit wurde das verteilte Versionsverwaltungssystem Git 2.35 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 implizites Hashing des gesamten vorherigen Verlaufs in jedem Commit verwendet. Darüber hinaus ist es möglich, einzelne Tags und Commits mit digitalen Signaturen von Entwicklern zu zertifizieren.

Im Vergleich zur Vorgängerversion enthielt die neue Version 494 Änderungen, die unter Beteiligung von 93 Entwicklern erstellt wurden, von denen 35 erstmals an der Entwicklung beteiligt waren. Wichtigste Neuerungen:

  • Die Möglichkeiten, SSH-Schlüssel zum digitalen Signieren von Git-Objekten zu verwenden, wurden erweitert. Um die Gültigkeitsdauer mehrerer Schlüssel zu begrenzen, wurde die Unterstützung der OpenSSH-Anweisungen „valid-before“ und „valid-after“ hinzugefügt, mit denen Sie die korrekte Arbeit mit Signaturen sicherstellen können, nachdem der Schlüssel von einem der Entwickler rotiert wurde. Zuvor gab es ein Problem mit der Trennung der Signaturen nach altem und neuem Schlüssel: Wenn Sie den alten Schlüssel löschen, ist die Überprüfung der damit erstellten Signaturen nicht mehr möglich, und wenn Sie ihn beibehalten, ist dies weiterhin möglich Erstellen Sie neue Signaturen mit dem alten Schlüssel, der bereits durch einen anderen Schlüssel ersetzt wurde. Mit valid-before und valid-after können Sie den Umfang der Schlüssel basierend auf dem Zeitpunkt der Signaturerstellung trennen.
  • In der Einstellung merge.conflictStyle, mit der Sie den Modus zum Anzeigen von Informationen zu Konflikten während einer Zusammenführung auswählen können, wurde der Modus „zdiff3“ unterstützt, der alle am Anfang oder Ende des Konflikts angegebenen Standardzeilen außerhalb des Konflikts verschiebt Bereich, der eine kompaktere Darstellung der Informationen ermöglicht.
  • Dem Befehl „git stash“ wurde der Modus „--staged“ hinzugefügt, mit dem Sie nur zum Index hinzugefügte Änderungen ausblenden können, beispielsweise in einer Situation, in der Sie einige der komplexen Änderungen vorübergehend verschieben müssen, um sie zuerst auszuführen Fügen Sie hinzu, was bereits fertig ist, und kümmern Sie sich nach einer Weile um den Rest. Der Modus ähnelt dem Befehl „git commit“, schreibt nur die im Index platzierten Änderungen, aber anstatt einen neuen Commit in „git stash –staged“ zu erstellen, wird das Ergebnis im temporären Stash-Bereich gespeichert. Sobald die Änderungen erforderlich sind, können sie mit dem Befehl „git stash pop“ rückgängig gemacht werden.
  • Dem Befehl „git log“ wurde ein neuer Formatbezeichner hinzugefügt, „--format=%(describe)“, der es Ihnen ermöglicht, die Ausgabe von „git log“ mit der Ausgabe des Befehls „git discover“ zu kombinieren. Die Parameter für „git discover“ werden direkt im Spezifizierer angegeben („-format=%(describe:match= ,ausschließen= )“), in die Sie auch verkürzte Tags einfügen können („—format=%(describe:tags= )") und konfigurieren Sie die Anzahl der Hexadezimalzeichen zur Identifizierung von Objekten („—format=%(describe:abbrev= )"). Um beispielsweise die letzten 8 Commits aufzulisten, deren Tags kein Release Candidate-Tag haben, und 8-stellige Bezeichner anzugeben, können Sie den folgenden Befehl verwenden: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642- gb56bd95 bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • Die Einstellung „user.signingKey“ unterstützt jetzt neue Schlüsseltypen, die nicht auf den Typ „ssh-“ und die Angabe des vollständigen Dateipfads zum Schlüssel beschränkt sind. Alternative Typen werden mit dem Präfix „key::“ angegeben, zum Beispiel „key::ecdsa-sha2-nistp256“ für ECDSA-Schlüssel.
  • Die Geschwindigkeit der Generierung einer Änderungsliste im „—histogram“-Modus sowie bei Verwendung der Option „—color-moved-ws“, die die Hervorhebung von Leerzeichen in einem Farbunterschied steuert, wurde deutlich erhöht.
  • Der Befehl „git jump“, der verwendet wird, um Vim Informationen über den genauen Sprung zur gewünschten Position in einer Datei bereitzustellen, wenn Zusammenführungskonflikte analysiert, Unterschiede angezeigt oder eine Suchoperation durchgeführt werden, bietet die Möglichkeit, die abgedeckten Zusammenführungskonflikte einzugrenzen. Um beispielsweise Vorgänge nur auf das Verzeichnis „foo“ zu beschränken, können Sie „git jump merge - foo“ angeben und um das Verzeichnis „Documentation“ von der Verarbeitung auszuschließen – „git jump merge – ':^Documentation'“.
  • Es wurde daran gearbeitet, die Verwendung des Typs „size_t“ anstelle von „unsigned long“ für Werte zu standardisieren, die die Größe von Objekten darstellen, was die Verwendung von „Clean“- und „Smudge“-Filtern bei Dateien mit mehr als 4 GB ermöglichte Auf allen Plattformen, auch auf Plattformen mit dem LLP64-Datenmodell, ist der Typ „unsigned long“ auf 4 Bytes begrenzt.
  • Dem Befehl „git am“ wurde die Option „-empty=(stop|drop|keep)“ hinzugefügt, mit der Sie das Verhalten für leere Nachrichten, die keine Patches enthalten, beim Parsen von Patches aus dem Postfach auswählen können. Der Wert „stop“ beendet den gesamten Patchvorgang, „drop“ überspringt einen leeren Patch und „keep“ erstellt einen leeren Commit.
  • Unterstützung für Teilindizes (sparse index) zu den Befehlen „git reset“, „git diff“, „git Blame“, „git fetch“, „git pull“ und „git ls-files“ hinzugefügt, um die Leistung zu verbessern und Platz zu sparen Repositorys, in denen teilweise Klonvorgänge (Sparse-Checkout) durchgeführt werden.
  • Der Befehl „git sparse-checkout init“ ist veraltet und sollte durch „git sparse-checkout set“ ersetzt werden.
  • Erste Implementierung eines neuen „reftable“-Backends zum Speichern von Referenzen wie Zweigen und Tags im Repository hinzugefügt. Das neue Backend nutzt den vom JGit-Projekt verwendeten Blockspeicher und ist für die Speicherung einer sehr großen Anzahl von Referenzen optimiert. Das Backend ist noch nicht in das Refs-System integriert und nicht für den praktischen Einsatz bereit.
  • Die Farbpalette des Befehls „git grep“ wurde an das GNU-Dienstprogramm grep angepasst.

Source: opennet.ru

Kommentar hinzufügen