Release der Versionierungssystem Git 2.36

Nach drei Monaten Entwicklung wurde die Version 2.36 des verteilten Versionskontrollsystems Git veröffentlicht. Git ist eines der beliebtesten, zuverlĂ€ssigsten und leistungsfĂ€higsten Versionskontrollsysteme, das flexible Mittel fĂŒr nichtlineare Entwicklungen bietet, die auf Branching und Merging basieren. Um die IntegritĂ€t der Historie und die WiderstandsfĂ€higkeit gegen rĂŒckwĂ€rts gerichtete Änderungen zu gewĂ€hrleisten, wird eine implizite Hash-VerschlĂŒsselung der gesamten vorherigen Historie in jedem Commit verwendet. Zudem ist es möglich, digitale Signaturen von einzelnen Entwicklern fĂŒr Tags und Commits zu bestĂ€tigen.

Im Vergleich zur vorherigen Version wurden in dieser neuen Version 717 Änderungen aufgenommen, die mit der Mitarbeit von 96 Entwicklern vorbereitet wurden, von denen 26 erstmals an der Entwicklung teilnahmen. Die wichtigsten Neuerungen:

  • Die Befehle „git log“ und „git show“ wurden um die Option „—remerge-diff“ erweitert. Diese ermöglicht es, die Unterschiede zwischen dem allgemeinen Merge-Ergebnis und den tatsĂ€chlichen Daten, die in dem Commit nach der AusfĂŒhrung des „merge“-Befehls reflektiert werden, anzuzeigen. Dadurch können die Änderungen, die aufgrund der Konfliktlösung beim Merge durchgefĂŒhrt wurden, anschaulich bewertet werden. Der normale Befehl „git show“ trennt die verschiedenen Konfliktlösungen durch EinrĂŒckungen, was das VerstĂ€ndnis der Änderungen erschwert. Im folgenden Screenshot zeigt die Zeile „+/-“ ohne EinrĂŒckung die letzte Konfliktlösung, die mit der Umbenennung des ersten Branches von sha1 in oid im Kommentar verbunden ist, wĂ€hrend „+/-“ mit EinrĂŒckung die ursprĂŒngliche Konfliktlösung darstellt, die durch das Auftreten eines zusĂ€tzlichen Arguments in der Funktion dwim_ref() im zweiten Branch verursacht wurde.
    Release der Versionierungssystem Git 2.36

    Bei Verwendung der Option „—remerge-diff“ werden die Unterschiede zwischen den Konfliktlösungen nicht fĂŒr jeden Eltern-Branch getrennt angezeigt. Stattdessen werden die allgemeinen Unterschiede zwischen der Datei mit den Merge-Konflikten und der Datei, in der die Konflikte gelöst wurden, angezeigt.

    Release der Versionierungssystem Git 2.36
  • Die FlexibilitĂ€t bei der Konfiguration des Verhaltens beim ZurĂŒcksetzen von Festplattencaches durch den Aufruf der Funktion fsync() wurde erhöht. Der zuvor verfĂŒgbare Parameter core.fsyncObjectFiles wurde in zwei Konfigurationsvariablen, core.fsync und core.fsyncMethod, unterteilt, die es ermöglichen, fsync nicht nur auf Objektdateien (.git/objects), sondern auch auf andere Git-Strukturen wie Referenzen (.git/refs), Reflog und Packdateien anzuwenden.

    Über die Variable core.fsync kann eine Liste interner Git-Strukturen angegeben werden, fĂŒr die nach einem Schreibvorgang zusĂ€tzlich fsync aufgerufen wird. Die Variable core.fsyncMethod ermöglicht die Auswahl der Methode zum ZurĂŒcksetzen des Caches; beispielsweise kann fsync fĂŒr den entsprechenden Systemaufruf ausgewĂ€hlt oder writeout-only zur Verwendung von verzögertem Schreiben (pagecache writeback) angegeben werden.

  • Um sich vor der Manipulation von .git-Verzeichnissen durch andere Benutzer in gemeinsam genutzten Bereichen zu schĂŒtzen, wurde die ÜberprĂŒfung des Repository-Besitzers verstĂ€rkt. Das AusfĂŒhren von Git-Befehlen ist nun nur noch in den eigenen .git-Verzeichnissen erlaubt. Wenn das Repository-Verzeichnis einem anderen Benutzer gehört, wird standardmĂ€ĂŸig ein Fehler ausgegeben. Dieses Verhalten kann durch die Einstellung safe.directory deaktiviert werden.
  • Der Befehl „git cat-file“, der zur Ausgabe des Quellinhalts von Git-Objekten dient, hat eine Option „—batch-command“ erhalten, die die zuvor verfĂŒgbaren Befehle „—batch“ und „—batch-check“ ergĂ€nzt und die adaptive Auswahl des Ausgabeformats durch Angabe von „contents “ zum Ausgeben des Inhalts oder „info “ zum Ausgeben von Informationen ĂŒber das Objekt ermöglicht. Zudem wird der Befehl „flush“ unterstĂŒtzt, um den Ausgabepuffer zurĂŒckzusetzen.
  • Der Befehl „git ls-tree“ wurde um die Option „—oid-only“ („—object-only“) erweitert, Ă€hnlich wie „—name-only“, um nur die Objekt-IDs auszugeben und dadurch die Verwendung in Skripten zu vereinfachen. Außerdem wurde die Option „—format“ implementiert, die es ermöglicht, ein benutzerdefiniertes Ausgabeformat zu definieren, das Informationen ĂŒber Modus, Typ, Name und GrĂ¶ĂŸe kombiniert.
  • Im Befehl „git bisect run“ wurde die Erkennung des Fehlens des AusfĂŒhrungsattributs fĂŒr Skripte implementiert, sodass in diesem Fall Fehler mit den Codes 126 oder 127 ausgegeben werden (zuvor wurden alle Revisionen, die nicht ausgefĂŒhrt werden konnten, als problematisch markiert).
  • Der Befehl „git fetch“ wurde um die Option „—refetch“ ergĂ€nzt, um alle Objekte abzurufen, ohne die andere Seite ĂŒber den bereits auf dem lokalen System vorhandenen Inhalt zu informieren. Ein solches Verhalten kann nĂŒtzlich sein, um den Zustand nach Fehlern wiederherzustellen, wenn die IntegritĂ€t der lokalen Daten ungewiss ist.
  • Die Befehle „git update-index“, „git checkout-index“, „git read-tree“ und „git clean“ unterstĂŒtzen jetzt partielle Indizes (sparse index), die die Leistung verbessern und Speicherplatz in Repositories sparen, bei denen spĂ€rliches Klonen (sparse-checkout) durchgefĂŒhrt wird.
  • Das Verhalten des Befehls „git clone —filter=
 —recurse-submodules“ wurde geĂ€ndert, sodass nun nur die Submodule teilweise geklont werden (frĂŒher wurde der Filter nur auf den Hauptinhalt angewendet, wĂ€hrend die Submodule vollstĂ€ndig ohne BerĂŒcksichtigung des Filters geklont wurden).
  • Im Befehl „git bundle“ wurde die UnterstĂŒtzung fĂŒr die Angabe von Filtern fĂŒr die selektive Aufnahme von Inhalten hinzugefĂŒgt, Ă€hnlich wie bei den Operationen des partiellen Klonens.
  • Dem Befehl „git branch“ wurde die Option „—recurse-submodules“ hinzugefĂŒgt, um Submodule rekursiv zu durchlaufen.
  • FĂŒr die Sprache Kotlin wurde ein neuer Userdiff-Handler vorgeschlagen.

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