Die neue Version des Versionsverwaltungssystems Git 2.52 ist erschienen.

Nach drei Monaten Entwicklung wurde die Version 2.52 des verteilten Systems zur Verwaltung von Quelltexten Git veröffentlicht. Git zeichnet sich durch hohe LeistungsfĂ€higkeit aus und bietet Werkzeuge fĂŒr die nichtlineare Entwicklung, die auf Verzweigung und ZusammenfĂŒhrung von Branches basieren. Um die IntegritĂ€t der Historie und die WiderstandsfĂ€higkeit gegen nachtrĂ€gliche Änderungen zu gewĂ€hrleisten, wird eine implizite Hashierung der gesamten vorherigen Historie in jedem Commit verwendet sowie die Verifizierung durch digitale Signaturen der Entwickler fĂŒr bestimmte Tags und Commits. Der Git-Code wird unter der GPLv2+ Lizenz verbreitet.

Im Vergleich zur vorherigen Version wurden in die neue Version 637 Änderungen aufgenommen, die mit der Beteiligung von 94 Entwicklern vorbereitet wurden (33 nahmen erstmals an der Entwicklung von Git teil). Wichtige Neuerungen (1, 2, 3):

  • Der Befehl „git last-modified“ wurde hinzugefĂŒgt, um eine Liste von Dateien in der angegebenen Revision sowie der Commits anzuzeigen, die die letzten Änderungen an jeder dieser Dateien vorgenommen haben. $ git last-modified HEAD b56f6dcd7b4c90192018e848d0810f091d092913 test.h 29330ae4b820147c98e723399e9438c8bee60a8a test1.c 573ad8917beb99dc643b6e7f5c117a294384a575 test2.c
  • Der Befehl „git repo“ wurde hinzugefĂŒgt, um Aktionen zum Abrufen von Informationen aus einem Repository auszufĂŒhren. Zwei Unterbefehle wurden vorgeschlagen – „git repo info“ und „git repo structure“, die Informationen ĂŒber die Repository-Einstellungen und die Struktur des Repositories ausgeben (zum Beispiel kann festgestellt werden, wie viele Referenzen und Objekte sich im Repository befinden). $ git repo info object.format references.format object.format=sha1 references.format=reftable $ git repo structure | Repository-Struktur | Wert | | ————————— | ——— | | * Referenzen | | | * Anzahl | 1983 | | * Branches | 4 | | * Tags | 1125 | | * Remotes | 854 | | * Sonstige | 0 | | | | | * Erreichbare Objekte | | | * Anzahl | 518955 | | * Commits | 77469 | | * Trees | 188865 | | * Blobs | 251631 | | * Tags | 990 |
  • Dem Befehl „git refs“ wurden drei Unterbefehle hinzugefĂŒgt, die disparate und sich ĂŒberschneidende Low-Level-Operationen auf Referenzen (git for-each-ref, git show-ref, git update-ref und git pack-refs) vereinheitlichen.
    • „git refs optimize“ – Optimierung des Backends zur Speicherung von Referenzen (analog zu „git pack-refs“).
    • „git refs list“ – Gibt eine Liste aller Referenzen aus (analog zu „git for-each-ref“ oder „git show-ref“).
    • „git refs exists“ – ÜberprĂŒft die Existenz einer Referenz (entspricht „git show-ref —exists“).
  • Das Format fĂŒr den Export oder Import von Commit-Historien wurde um die Möglichkeit erweitert, mit kryptografischen Signaturen zu arbeiten, die sowohl auf SHA-1- als auch auf SHA-256-basierten Objekt-IDs basieren. Das Kommando „git fast-import“ unterstĂŒtzt jetzt die Verarbeitung von signierten Tags analog zu signierten Commits. Es wurden die Optionen „—signed-commits=<Modus>“ und „—signed-tags=<Modus>“ hinzugefĂŒgt, um die Verarbeitung von signierten Commits und Tags wĂ€hrend des Imports zu steuern (der Modus kann die Werte verbatim, warn-verbatim, warn-stri, strip oder abort annehmen).
  • Im Befehl „git maintenance“ wurde eine neue Strategie „geometric“ hinzugefĂŒgt („git config set maintenance.strategy geometric“), die es ermöglicht, die Wartungszeit großer Monorepositories zu verkĂŒrzen. Im Vergleich zur zuvor verfĂŒgbaren Strategie, die die Logik des Befehls „git gc“ verwendet, vermeidet die neue Strategie die Neupackung aller Objekte und schließt ressourcenintensive Operationen wie das ZusammenfĂŒhren aller Pack-Dateien aus (wenn möglich, wird die ZusammenfĂŒhrung schrittweise und ohne das Reinigen von entfernten Objekten durchgefĂŒhrt).
  • Das Kommando „git sparse-checkout clean“ wurde hinzugefĂŒgt, um die Wiederherstellung des Arbeitsverzeichnisses zu vereinfachen, indem Dateien entfernt werden, die nicht mit der neuen Definition des sparse-checkouts ĂŒbereinstimmen und nicht in der lokalen Kopie gemĂ€ĂŸ den aktuellen sparse-checkout-Einstellungen vorhanden sein sollten.
  • Um die Codebasis von KomplexitĂ€t zu befreien und die Wartung zu vereinfachen, wurde ein Refactoring durchgefĂŒhrt, um die Verwendung der globalen Variable the_repository zu reduzieren.
  • Die Anwendung von Bloom-Filtern, einer probabilistischen Struktur zur ÜberprĂŒfung des Vorhandenseins in einer Menge, wurde erweitert. Diese ermöglichen eine falsche Bestimmung fehlender Elemente, schließen jedoch das Übersehen vorhandener Elemente aus. Bloom-Filter werden jetzt verwendet, um die Suche in der Änderungshistorie zu beschleunigen, indem Wildcards in Dateipfaden angegeben werden, wie zum Beispiel „foo/bar/*/baz“.
  • Die Performance des Befehls „git describe“ wurde um 30 % verbessert, dank der Nutzung einer PrioritĂ€tenwarteschlange. Die Umbenennung von Remote-Links in „git remote rename“ wurde beschleunigt. Die Anwendung von Indizes in „git ls-files“ wurde erweitert. Die Geschwindigkeit des Befehls „git log -L“ wurde deutlich erhöht, indem ĂŒberflĂŒssige dreistufige Vergleiche bei der Verarbeitung von Merge-Commits ausgeschlossen wurden. Optimierungen wurden in die xdiff-Bibliothek eingefĂŒhrt.
  • Es wurde die optionale Möglichkeit eingefĂŒhrt, Implementierungen in der Programmiersprache Rust fĂŒr einige interne Funktionen wie das Kodieren und Dekodieren von variablen ganzzahligen Werten zu verwenden. StandardmĂ€ĂŸig wird der Rust-Code nicht verwendet, und um ihn zu aktivieren, muss das Build-Flag WITH_RUST angegeben werden. In Zukunft wird erwartet, dass eine Überarbeitung wichtiger interner Git-Komponenten in Rust erfolgt und Rust zu den erforderlichen Build-AbhĂ€ngigkeiten in Git 3.0 hinzugefĂŒgt wird.
  • Die Liste der inkompatiblen Änderungen, die in der Git-Version 3.0 angewendet werden, wurde aktualisiert. In Git 3.0 wurde beschlossen, die Standardkonfiguration fĂŒr init.defaultBranch auf "main" zu Ă€ndern. Das bedeutet, dass in Repositories, die mit dem Befehl „git init“ erstellt werden, der Standardbranch "main" und nicht "master" genannt wird. Außerdem wird der Wechsel zum Standard-Hashalgorithmus SHA-256 fĂŒr Objektnummern bei der Initialisierung neuer Repositories bemerkt. Um die PortabilitĂ€t zwischen Repositories mit SHA-1 und SHA-256 Hash-IDs zu erleichtern, wurde die Möglichkeit geschaffen, in einem Repository mit einem Hashalgorithmus Push- und Pull-Operationen von einem Repository, das einen anderen Hashalgorithmus verwendet, durchzufĂŒhren.

Quelle: opennet.ru

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster