Veröffentlichung des Versionsverwaltungsprogramms Git 2.46

Nach drei Monaten Entwicklung wurde die Version 2.46 des verteilten Systems zur Verwaltung von Quelltexten Git veröffentlicht. Git ist eines der beliebtesten, zuverlässigsten und leistungsstärksten Versionskontrollsysteme, das flexible Mittel für nichtlineare Entwicklungen bietet, die auf Verzweigungen und Zusammenführungen von Branches basieren. Um die Integrität der Historie und die Widerstandsfähigkeit gegen "Zurückdatierung" zu gewährleisten, wird das implizite Hashing der gesamten vorhergehenden Historie in jedem Commit verwendet; außerdem ist die Überprüfung digitaler Signaturen von Entwicklern für bestimmte Tags und Commits möglich. Der Code von Git wird unter der Lizenz GPLv2+ verteilt.

Im Vergleich zur vorherigen Version wurden in diese neue Version 746 Änderungen aufgenommen, die von 96 Entwicklern vorbereitet wurden, von denen 31 erstmals an der Entwicklung beteiligt sind. Die Hauptneuheiten sind:

  • Es wurde experimentelle Unterstützung für einen neuen Typ von Bitmaps hinzugefügt – „pseudo-merge reachability bitmap“. Im Gegensatz zur Struktur der „reachability bitmap“ werden hierbei die Daten über Objektmengen, die mit Commits in Verbindung stehen, nicht an jeden einzelnen Commit gebunden, sondern an mehrere Commits gleichzeitig. Diese Organisation ermöglicht die Verwendung einer einzigen Bitmap zur Bestimmung von Objekten für Commits in verschiedenen Branches. In großen Repositories trägt dies dazu bei, die Erstellung einer Vielzahl individueller Bitmaps zu vermeiden und beschleunigt erheblich den Zugriff auf Objekte zur Bestimmung, welche Objekte an den Client gesendet werden müssen, bei der Durchführung von Operationen wie „git fetch“, „git rev-list“ und „git clone“. Um den neuen Typ von Bitmaps zu aktivieren und die Logik für deren Auswahl und Verwendung zu definieren, wurde eine Reihe von Einstellungen vorgeschlagen: „bitmapPseudoMerge“: git config bitmapPseudoMerge.all.pattern ‘refs/(heads|tags)/’ git config bitmapPseudoMerge.all.threshold now git config bitmapPseudoMerge.all.stableThreshold never git repack -adb
  • Eine neue Befehlszeilenschnittstelle für den Befehl „git config“ wurde implementiert, die anstelle der verstreuten Optionen zum Anzeigen, Umbenennen und Löschen von Einstellungen und Sektionen wie „—get“, „—get-all“, „—unset“ und „—remove-section“ eine Reihe von separaten Sub-befehlen bietet. Beispielsweise kann der Befehl „git config list“ nun verwendet werden, um alle Einstellungen des Repositories auszugeben, und um den Inhalt eines bestimmten Parameters anzuzeigen, wird der Befehl „git config get “ verwendet. Zur zusätzlichen Filterung der Ergebnisse kann die Option „—regexp“ verwendet werden, um einen regulären Ausdrucksfilter festzulegen.
  • Im Protokoll „credential helper“, das zur Übertragung von Anmeldeinformationen beim Zugriff auf Repositories mit eingeschränktem Zugriff verwendet wird, wurde die Unterstützung neuer Felder „authtype“ und „credential“ hinzugefügt. Diese ermöglichen die Erstellung von Handlern für HTTP-Authentifizierungssysteme, die über die Überprüfung von Benutzername und Passwort hinausgehen, beispielsweise beim Einsatz von Bearer Tokens in OAuth 2.0. Zuvor musste man vertrauliche Daten im Klartext im Parameter http.extraHeader angeben, um mit solchen Authentifizierungssystemen zu arbeiten. Zudem bietet das Protokoll die Möglichkeit, den Zustand jedes Anmeldeinformationshandlers zu speichern, um mehrstufige Authentifizierungsmethoden zu unterstützen, die in Protokollen wie NTLM und Kerberos verwendet werden.
  • Die Entwicklung des experimentellen Backends „reftable“ wurde fortgesetzt, um eine effiziente Speicherung von Verweisen auf Branches und Tags im Repository zu ermöglichen. Dieses Backend nutzt den Blockspeicher, der im JGit-Projekt verwendet wird und für die Speicherung einer sehr großen Anzahl von Verweisen optimiert ist (traditionelle Speicherformate für Verweise führen in Repositories mit einer hohen Anzahl an Verweisen zu erheblichen Overheads aufgrund der Platzierung einer sehr großen Anzahl von Dateien in einem einzigen Verzeichnis, wenn die Verweise im Verzeichnis $GIT_DIR/refs gespeichert werden, oder zur Notwendigkeit, eine große Datei bei jedem Update neu zu schreiben, wenn die Verweise in der Datei $GIT_DIR/packed_refs gespeichert werden). In der neuen Version wurde der Befehl „git refs migrate —ref-format=reftable“ hinzugefügt, um bestehende Repositories auf das Backend „reftable“ zu migrieren (früher wurde das Backend nur bei der Initialisierung des Repositories aktiviert).
  • Dem git-Befehl wurde die Option „—no-advice“ hinzugefügt, die alle Nachrichten mit Empfehlungen und Hinweisen deaktiviert. Dies kann nützlich sein, um zu verhindern, dass das Log mit überflüssigen Informationen bei automatisierten Aufrufen von git vollgestopft wird.
  • Der Prozess zur Übertragung einiger Tests aus dem Testset auf die Verwendung von Unittests hat begonnen. Dies wird die Testung der Low-Level-Komponenten vereinfachen und die Effektivität des Testprozesses auf der Windows-Plattform erhöhen, auf der erhebliche Overheads beim Start von vielen Prozessen während der Ausführung von Tests, die als Shell-Skripte implementiert sind, entstehen.
  • Im Code zur Analyse der Farbanpassungen wurde die Möglichkeit hinzugefügt, das „#RGB“-Format neben „#RRGGBB“ zu verwenden.

Quelle: opennet.ru

Erwerben 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