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
