Veröffentlichung des Versionskontrollsystems Git 2.48

Die Veröffentlichung der verteilten Versionskontrollsoftware Git 2.48 ist nun verfĂŒgbar. Git zeichnet sich durch hohe Leistung aus und bietet Werkzeuge fĂŒr die nichtlineare Entwicklung, die auf Verzweigungen und ZusammenfĂŒhrungen basieren. Um die IntegritĂ€t der Historie und die WiderstandsfĂ€higkeit gegenĂŒber "nachtrĂ€glichen" Änderungen zu gewĂ€hrleisten, wird das implizite Hashing der gesamten vorherigen Historie in jedem Commit, sowie die digitale Signatur von Entwicklern fĂŒr bestimmte Tags und Commits verwendet. Der Code von Git wird unter der GPLv2+ Lizenz verbreitet.

Im Vergleich zur vorherigen Version wurden in die neue Version 605 Änderungen aufgenommen, die mit UnterstĂŒtzung von 93 Entwicklern vorbereitet wurden, von denen 35 erstmals an der Entwicklung beteiligt sind. Die wichtigsten Neuerungen:

  • Die Möglichkeit, mit dem Build-System Meson zu arbeiten, ist nun möglich, zusĂ€tzlich zu GNU Make und CMake. FĂŒr das Bauen kann jetzt der Befehl „meson setup build && ninja -C build“ verwendet werden. Es sollte angemerkt werden, dass das Makefile, das bei Verwendung von GNU Make verwendet wird, auf 3887 Zeilen angewachsen ist und nicht so einfach ist, wie man es sich wĂŒnschen wĂŒrde. Das Meson-Werkzeug erleichtert die Arbeit mit dem Build-System, ist benutzerfreundlich fĂŒr plattformĂŒbergreifende Builds und macht das Bauen auch fĂŒr AnfĂ€nger oder Entwickler ohne Erfahrung mit der Make-UtilitĂ€t zugĂ€nglich. Eine Einstellung der UnterstĂŒtzung fĂŒr Make und CMake ist in absehbarer Zeit nicht geplant.
  • Es wurden Build-Optionen hinzugefĂŒgt, die alternative Implementierungen des SHA-1-Hashes ermöglichen, um PrĂŒfziffern zu berechnen, die zur ÜberprĂŒfung der IntegritĂ€t von Datenblöcken in Pack-Dateien verwendet werden. Die Leistung bei der Berechnung von PrĂŒfziffern ist entscheidend, z. B. werden beim Klonen des Linux-Kernel-Repositories etwa 78 % der Prozessorzeit fĂŒr deren Berechnung aufgewendet. Die standardmĂ€ĂŸig verwendete Implementierung enthĂ€lt zusĂ€tzliche KollisionsprĂŒfungen und Schutzmechanismen gegen Angriffe auf SHA-1 wie SHAttered und Shambles. solcher Schutz, der zusĂ€tzliche Ressourcen benötigt, ist nur sinnvoll, wenn SHA-1 fĂŒr kryptographische Zwecke verwendet wird und ist nutzlos bei der ÜberprĂŒfung der IntegritĂ€t von Indexdaten.

    FĂŒr den Git-Bau mit einer schnelleren SHA-1-Implementierung, die nicht fĂŒr Kryptosysteme geeignet ist, wurde eine Reihe von Optionen *_UNSAFE, wie „OPENSSL_SHA1_UNSAFE“, vorgeschlagen. Bei GitHub ermöglichte der Build mit vereinfachtem SHA-1 eine Leistungssteigerung von 10-13 % bei Datenabruf- und Klonierungsoperationen.

  • Die Möglichkeit, die Option „—remerge-diff“ im Team „range-diff“ zu verwenden, wurde hinzugefĂŒgt. Diese Option zeigt die Unterschiede zwischen dem gemeinsamen Ergebnis des Mergers und den tatsĂ€chlichen Daten, die im Commit nach der AusfĂŒhrung des „Merge“-Befehls reflektiert sind. Bei Verwendung der Option „—remerge-diff“ werden die Unterschiede zwischen den Konfliktlösungen nicht fĂŒr jeden Elternbranch getrennt angezeigt, sondern es werden allgemeine Unterschiede zwischen der Datei mit Merge-Konflikten und der Datei, in der die Konflikte gelöst wurden, angezeigt. Im Kontext des „range-diff“-Befehls könnte die neue Option nĂŒtzlich sein, um Commit-Sets nach dem Verschieben der Commit-Sequenz mit dem „rebase“-Befehl und der Option „—rebase-merges“ zu vergleichen.
  • Die Möglichkeit, eine Git-Testreihe im Modus zur Erkennung von Speicherlecks auszufĂŒhren, wurde hinzugefĂŒgt. Da Git Dienstprogramme bereitstellt, die nach der AusfĂŒhrung der aufgerufenen Funktion beendet werden, wurden Speicherlecks frĂŒher nicht als großes Problem angesehen. Die Notwendigkeit zur vollstĂ€ndigen Beseitigung von Speicherlecks ist relevanter geworden, nachdem mit der Auslagerung interner FunktionalitĂ€ten in eine separate Bibliothek begonnen wurde, die in langlebigen Prozessen verwendet werden kann.
  • Die Erstellung einer Liste veralteter Funktionen und Modi hat begonnen, deren UnterstĂŒtzung in Zukunft eingestellt werden soll. Es wird erwartet, dass die Entfernung der veralteten FunktionalitĂ€t in der Version Git 3.0 erfolgt, die Änderungen enthalten wird, die die AbwĂ€rtskompatibilitĂ€t brechen.
  • Die Optimierung des Befehls „git for-each-ref“, der eine Liste von Referenzen im Repository ausgibt, wurde fortgesetzt. Die Optimierung, die die Handler fĂŒr die Filterung von Referenzen und die Formatierung der Ausgabe zusammenfĂŒhrt, wird nun nicht nur fĂŒr unsortierte Ausgaben angewendet, sondern auch bei Angabe der Option „—sort“.
  • Die Implementierung des Backend «reftable» mit Blockspeicher wurde verbessert, um eine effiziente Speicherung von Links auf Branches und Tags im Repository zu gewĂ€hrleisten. Reftable ermöglicht eine signifikante Beschleunigung von Suche, Lese- und SchreibvorgĂ€ngen in Repositories mit einer sehr hohen Anzahl von Links. In der neuen Version wird der Zugriff auf einige Hilfs-APIs eingestellt, um die libgit-Bibliothek aus den Build-AbhĂ€ngigkeiten weiter zu entfernen. Eine adaptive Fehlerbehandlung wurde fĂŒr die von den Speicherzuweisungsfunktionen zurĂŒckgegebenen Fehler implementiert (Speichermangel fĂŒhrt jetzt nicht mehr zu einem Absturz). Die VorgĂ€nge zur Erstellung von Links wurden beschleunigt und der Speicherverbrauch reduziert.
  • In der Implementierung des partiellen Klonens wurden Probleme gelöst, die zu Endlosschleifen und einer BeschĂ€digung des Repositories nach der AusfĂŒhrung des Befehls «git gc» fĂŒhrten.
  • Beim AusfĂŒhren des Befehls «git fetch <remote>» wird im Falle der Abwesenheit von «refs/remotes/<remote>/HEAD» im lokalen System und der Anwesenheit eines Branches, auf den HEAD verweist, auf der anderen Seite «refs/remotes/<remote>/HEAD» jetzt auf diesen Branch umgeleitet. Um die Synchronisation von «refs/remotes/<remote>/HEAD» mit dem HEAD-Wert auf der anderen Seite der Verbindung zu steuern, wurde die Einstellung remote.<remote>.followRemoteHEAD» hinzugefĂŒgt.
  • Die Einstellung «remote.<name>.serverOption» wurde hinzugefĂŒgt, Ă€hnlich wie die Befehlszeilenoption «—serverOption=<value>».
  • Im Befehl «git rebase —rebase-merges» wird nach Möglichkeit die Verwendung von Branch-Namen als Labels sichergestellt.
  • Den Befehlen ‘git notes add’ und ‘git notes append’ wurde die Option ‘-e’ hinzugefĂŒgt, die eine Notiz im externen Texteditor öffnet, der ĂŒber die Umgebungsvariable GIT_EDITOR angegeben ist.
  • Die KompatibilitĂ€t mit GCC 15 und dem C23 Standard wurde verbessert.
  • Die UnterstĂŒtzung fĂŒr Ă€ltere Versionen von libcURL und Perl wurde eingestellt.

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