Veröffentlichung des Versionskontrollsystems Git 2.39

Nach zwei Monaten Entwicklung wurde die Version 2.39 des verteilten Systems zur Verwaltung von Quelltexten Git veröffentlicht. Git gehört zu den beliebtesten, zuverlĂ€ssigsten und leistungsfĂ€higsten Versionsverwaltungssystemen und bietet flexible Möglichkeiten fĂŒr nichtlineare Entwicklungen, die auf Branching und Merging basieren. Um die IntegritĂ€t der Historie zu gewĂ€hrleisten und Änderungen "rĂŒckwirkend" zu verhindern, wird die gesamte vorherige Historie in jedem Commit implizit gehasht; zudem ist die BestĂ€tigung durch digitale Signaturen der Entwickler fĂŒr einzelne Tags und Commits möglich.

Im Vergleich zur vorherigen Version wurden 483 Änderungen in die neue Version aufgenommen, die von 86 Entwicklern vorbereitet wurden, von denen 31 erstmals an der Entwicklung teilnahmen. Die wichtigsten Neuerungen sind:

  • Das Kommando „git shortlog“, das zur Anzeige von Zusammenfassungen mit Statistiken aus der Änderungshistorie dient, wurde um die Option „—group“ erweitert, um die Gruppierung von Commits nach beliebigen Feldern zu ermöglichen, die nicht auf den Autor oder Commiter beschrĂ€nkt sind. Um beispielsweise eine Liste der Entwickler anzuzeigen, die Informationen ĂŒber die Anzahl der Änderungen enthĂ€lt und Co-Autoren berĂŒcksichtigt, die im Feld „Co-authored-by“ erwĂ€hnt werden, kann der Befehl verwendet werden: git shortlog -ns —group=author —group=trailer:co-authored-by

    Die Ausgabe des shortlogs kann mithilfe von Format-Spezifizierern aggregiert werden, und die Option „—group“ erleichtert erheblich die Erstellung komplexer Berichte, wodurch zusĂ€tzliche Sortierbefehle vermieden werden. Um beispielsweise einen Bericht darĂŒber zu erstellen, wie viele Commits fĂŒr eine bestimmte Version in jedem Monat akzeptiert wurden, können Sie angeben: git shortlog v2.38.0.. —date=’format:%Y-%m’ —group=’’ -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12. FrĂŒher hĂ€tte fĂŒr einen Ă€hnlichen Vorgang die Nutzung der Tools sort und uniq erforderlich gewesen: git log v2.38.0.. —date=’format:%Y-%m’ —format=’’ | sort | uniq -c

  • Die Funktionen des Mechanismus „cruft packs“ wurden erweitert, um unerreichbare Objekte, auf die im Repository keine Verweise existieren (weder durch Branches noch durch Tags), zu verpacken. Unerreichbare Objekte werden vom Garbage Collector entfernt, bleiben jedoch zunĂ€chst eine gewisse Zeit im Repository, um Rennbedingungen auszuschließen. Der „cruft packs“-Mechanismus ermöglicht die Speicherung aller unerreichbaren Objekte in einer einzigen Pack-Datei, wĂ€hrend die Änderungszeit jedes Objekts in einer separaten Tabelle festgehalten wird, die in einer eigenen Datei mit der Erweiterung „.mtimes“ gespeichert wird, um eine Überschneidung mit der allgemeinen Änderungszeit zu vermeiden.

    Die Zeitspanne, in der unerreichbare Objekte im Repository verbleiben, bevor sie tatsĂ€chlich gelöscht werden, wird durch die Option „—prune=“ definiert. Obwohl die Verzögerung vor der Löschung eine recht effektive und praktische Methode ist, um Repository-SchĂ€den durch Wettlaufbedingungen zu verhindern, ist sie nicht zu 100 % zuverlĂ€ssig. Um die Wiederherstellung eines beschĂ€digten Repositories zu erleichtern, bietet die neue Version die Möglichkeit, fehlende Objekte zu speichern. DafĂŒr wurde der Befehl „git repack“ um die Option „—expire-to“ erweitert, die es ermöglicht, eine Datei anzugeben, um eine externe Kopie aller zu löschenden Objekte zu erstellen. Zum Beispiel kann man zur Speicherung von unerreichbaren Objekten, die sich in den letzten 5 Minuten nicht geĂ€ndert haben, folgenden Befehl verwenden: git repack —cruft —cruft-expiration=5.minutes.ago -d —expire-to=../backup.git

  • Die Geschwindigkeit der AusfĂŒhrung des Befehls „git grep —cached“ wurde erheblich erhöht (um bis zu 70 %) bei Suchen in Bereichen, in denen partielles Klonen (sparse-checkout) angewendet wird und fĂŒr die partielle Indizes (sparse index) existieren. Zuvor wurde bei Angabe der Option „—cached“ zuerst im regulĂ€ren Index und danach in den partiellen Indizes gesucht, was zu spĂŒrbaren Verzögerungen bei Suchen in großen Repositorien fĂŒhrte.
  • Die AusfĂŒhrung wurde beschleunigt um Server die ÜberprĂŒfung der Konsistenz neuer Objekte, bevor sie in das Repositorium eingefĂŒgt werden, bei AusfĂŒhrung des Befehls „git push“. Durch die Umstellung auf die ÜberprĂŒfung nur der deklarierten Referenzen konnten in einem Test-Repositorium mit 7 Millionen Referenzen, von denen nur 3 % durch den Push-Befehl erfasst werden, die Optimierungen die ÜberprĂŒfungszeit um das 4,5-fache verkĂŒrzen.
  • Um vor potenziellen ganzzahligen ÜberlĂ€ufen im Code zu schĂŒtzen, wurde die maximale GrĂ¶ĂŸe der verarbeiteten Patches im Befehl „git apply“ begrenzt. Wenn die Patch-GrĂ¶ĂŸe 1 GB ĂŒberschreitet, wird jetzt ein Fehler ausgegeben.
  • Um potenzielle SicherheitsanfĂ€lligkeiten zu vermeiden, wurden Änderungen vorgenommen, um ĂŒberflĂŒssige Informationen aus den Kopfzeilen zu entfernen, die beim Einsatz des Moduls h2h3 mit den Optionen GIT_TRACE_CURL=1 oder GIT_CURL_VERBOSE=1 zusammen mit HTTP/2 ausgegeben werden.
  • Bei der AusfĂŒhrung des Check-Out-Befehls mit einem Branch, der ein symbolischer Verweis auf einen anderen Branch ist, gibt der Befehl „git symbolic-ref HEAD“ jetzt den Namen des Ziel-Branches und nicht den Namen des symbolischen Verweises aus.
  • Die UnterstĂŒtzung des Arguments @{-1} in der Option „—edit-description“ („git branch —edit-description @{-1}“) wurde hinzugefĂŒgt, um die Beschreibung des vorherigen Branches zu bearbeiten.
  • Der Befehl „git merge-tree —stdin“ wurde hinzugefĂŒgt, der es ermöglicht, eine Liste von Parametern ĂŒber den Standard-Eingabestrom zu ĂŒbergeben.
  • Bei Netzwerkdateisystemen ist der fsmonitor, der Änderungen im Dateisystem ĂŒberwacht, standardmĂ€ĂŸig deaktiviert.

Quelle: opennet.ru

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster