Nach drei Monaten Entwicklung wurde die Veröffentlichung des verteilten Versionsverwaltungssystems Git 2.46 veröffentlicht. Git ist eines der beliebtesten, zuverlĂ€ssigsten und leistungsstĂ€rksten Versionsverwaltungssysteme, das flexible Mittel fĂŒr nicht-lineare Entwicklungen bietet, die auf Verzweigungen und ZusammenfĂŒhrungen basieren. Zur Sicherstellung der IntegritĂ€t der Geschichte und der WiderstandsfĂ€higkeit gegenĂŒber nachtrĂ€glichen Ănderungen wird eine implizite Hashierung der gesamten vorherigen Historie in jedem Commit verwendet, und es ist auch möglich, die digitalen Signaturen einzelner Tags und Commits der Entwickler zu verifizieren. Der Git-Code wird unter der Lizenz GPLv2+ verbreitet.
Im Vergleich zur vorherigen Version wurden in die neue Version 746 Ănderungen aufgenommen, die mit der Beteiligung von 96 Entwicklern vorbereitet wurden, von denen 31 erstmals an der Entwicklung teilnehmen. Die wichtigsten Neuerungen sind:
- Es wurde experimentelle UnterstĂŒtzung fĂŒr eine neue Art von Bitmaps hinzugefĂŒgt â die âpseudo-merge reachability bitmapâ, in der, im Gegensatz zur Struktur der âreachability bitmapâ, die Informationen ĂŒber Objekt-Sets, die mit Commits verbunden sind, nicht an jedem einzelnen Commit gebunden sind, sondern an mehreren Commits gleichzeitig. Diese Organisation ermöglicht es, eine Bitmap zur Bestimmung der Objekte fĂŒr Commits in verschiedenen Zweigen zu verwenden, was in groĂen Repositorien die Notwendigkeit verringert, eine groĂe Anzahl individueller Bitmaps zu erstellen, und erheblich die Objektdurchlaufgeschwindigkeit erhöht, um festzustellen, 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 die neue Art von Bitmaps zu aktivieren und die Logik ihrer Auswahl und Nutzung zu bestimmen, wurde eine Reihe von Einstellungen âbitmapPseudoMergeâ vorgeschlagen: 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 umgesetzt, bei der anstelle von separaten Optionen zum Anzeigen, Umbenennen und Löschen von Einstellungen und Sektionen wie ââgetâ, ââget-allâ, ââunsetâ und ââremove-sectionâ eine Reihe separater Subbefehle angeboten wird. Beispielsweise kann nun der Befehl âgit config listâ verwendet werden, um alle Repository-Einstellungen anzuzeigen, und der Befehl âgit config get â, um den Inhalt eines bestimmten Parameters zu ĂŒberprĂŒfen. FĂŒr eine zusĂ€tzliche Filterung der Ergebnisse kann mit der Option ââregexpâ ein Filter basierend auf regulĂ€ren AusdrĂŒcken festgelegt werden.
- Im Protokoll âcredential helperâ, das zum Ăbertragen von Anmeldeinformationen beim Zugriff auf Repositories mit eingeschrĂ€nktem Zugriff verwendet wird, wurde die UnterstĂŒtzung neuer Felder âauthtypeâ und âcredentialâ hinzugefĂŒgt, die die Erstellung von Handlern fĂŒr HTTP-Authentifizierungssysteme ermöglichen, die nicht auf die ĂberprĂŒfung von Benutzername und Passwort beschrĂ€nkt sind, zum Beispiel bei Verwendung eines Bearer Tokens in OAuth 2.0. Bislang mussten sensible Daten im Klartext im Parameter http.extraHeader ĂŒbergeben werden, um mit solchen Authentifizierungssystemen zu arbeiten. DarĂŒber hinaus wurde dem Protokoll die Möglichkeit hinzugefĂŒgt, den Status 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â zur effektiven Speicherung von Verweisen auf Branches und Tags im Repository wurde fortgesetzt. Dieses Backend verwendet einen Blockspeicher, der von dem Projekt JGit eingesetzt wird und optimiert ist, um eine sehr groĂe Anzahl von Verweisen zu speichern (traditionelle Speicherformate fĂŒr Verweise fĂŒhren in Repositories mit vielen Verweisen zu spĂŒrbaren Overheads durch die Ablage einer sehr groĂen Anzahl von Dateien in einem Verzeichnis, wenn die Verweise im Verzeichnis $GIT_DIR/refs gespeichert sind, oder die Notwendigkeit, eine groĂe Datei bei jedem Update neu zu schreiben, wenn die Verweise in der Datei $GIT_DIR/packed_refs gespeichert sind). In der neuen Version wurde der Befehl âgit refs migrate âref-format=reftableâ hinzugefĂŒgt, um bestehende Repositories auf das Backend âreftableâ zu migrieren (zuvor wurde das Backend nur bei der Initialisierung des Repositories aktiviert).
- In das Git-Team wurde die Option ââno-adviceâ hinzugefĂŒgt, die alle Hinweise und Empfehlungen deaktiviert. Dies kann nĂŒtzlich sein, um zu verhindern, dass das Protokoll mit ĂŒberflĂŒssigen Informationen ĂŒberladen wird, wenn Git automatisiert aufgerufen wird.
- Es hat mit dem Prozess begonnen, einige PrĂŒfungen aus dem Testset auf Unit-Tests umzustellen, was das Testen von Low-Level-Komponenten vereinfachen und die Effizienz des Testprozesses auf der Windows-Plattform steigern wird, auf der hohe Overheadkosten durch das Starten einer groĂen Anzahl von Prozessen wĂ€hrend der AusfĂŒhrung der in Form von Shell-Skripten implementierten Tests entstehen.
- Im Code zur Analyse der Farbeinstellungen wurde die Möglichkeit hinzugefĂŒgt, die Darstellung â#RGBâ neben â#RRGGBBâ zu verwenden.
Quelle: opennet.ru
