Veröffentlichung des verteilten Versionskontrollsystems Git 2.25

VerfĂŒgbar Veröffentlichung des verteilten versionierten Systems Git 2.25.0. Git gehört zu den beliebtesten, zuverlĂ€ssigen und leistungsstĂ€rksten Versionsverwaltungssystemen und bietet flexible Mittel fĂŒr nicht-lineare Entwicklungen, die auf dem Branching und Merging von Zweigen basieren. Um die IntegritĂ€t der Historie und die WiderstandsfĂ€higkeit gegenĂŒber nachtrĂ€glichen Änderungen zu gewĂ€hrleisten, werden alle vorherigen Historien in jedem Commit implizit gehasht, und es ist auch möglich, digitale Signaturen fĂŒr bestimmte Tags und Commits der Entwickler zu verwenden.

Im Vergleich zur vorherigen Version wurden in die neue Version 583 Änderungen integriert, an denen 84 Entwickler beteiligt waren, von denen 32 erstmals an der Entwicklung mitwirkten. Haupt Neuheiten:

  • Die Möglichkeit des teilweisen Klonens nĂ€hert sich der StabilitĂ€t und vollstĂ€ndigen Bereitstellung. Diese Funktion ermöglicht es, nur einen Teil der Daten zu ĂŒbertragen und mit einer unvollstĂ€ndigen Kopie des Repositories zu arbeiten. Bei einem normalen Klonen werden alle Daten, einschließlich jeder Version jeder Datei aus der Änderungshistorie, kopiert. Bei sehr großen Repositories kann das Kopieren von Daten zu einem erheblichen Anstieg des Datenverkehrs und des Speicherplatzbedarfs fĂŒhren, selbst wenn der Entwickler nur an einer Teilmenge von Dateien interessiert ist. Um die Beschaffung eines Teils des Arbeitsverzeichnisses der Quelltexte zu erleichtern, wurde in dieser neuen Version der experimentelle Befehl „sparse-checkout“ und eine neue Option „—sparse“ fĂŒr den Befehl „clone“ eingefĂŒhrt.

    Zuvor wurde der Vorgang des selektiven Klonens ĂŒber die Angabe von Filtern um ĂŒberflĂŒssige Inhalte auszuschließen und die Option «—no-checkout» zu nutzen, um das AuffĂŒllen fehlender Dateien zu deaktivieren. Danach musste vor der AusfĂŒhrung des Checkout-Vorgangs die Einstellung core.sparseCheckout aktiviert und in der Datei .git/info/sparse-checkout eine Liste der auszuschließenden Pfadmuster definiert werden. Zum Beispiel konnte man fĂŒr ein Klonen ohne Blobs und das Verhindern des Auspackens von Dateien aus verschachtelten Verzeichnissen mit einer Tiefe von 2 oder mehr Folgendes ausfĂŒhren:

    git clone —filter=blob:none —no-checkout /your/repository/here repo
    $ cd repo
    $ cat >.git/info/sparse-checkout <EOF
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout .

    Der neue Befehl «git sparse-checkout» vereinfacht die Arbeit erheblich und reduziert den Prozess der Organisation des Arbeitens mit unvollstÀndigen Repositories auf folgende Befehle:

    git clone —filter=blob:none —sparse /your/repository/here repo
    git sparse-checkout set /path/to/check/out

    Der sparse-checkout-Befehl ermöglicht das Festlegen einer Liste von Pfaden fĂŒr den Checkout (set), ohne manuelle Anpassung der .git/info/sparse-checkout vorzunehmen, sowie das Anzeigen der aktuellen Pfadliste (list) und das Aktivieren oder Deaktivieren von partiellen Checkouts (enable/disable).

    Um die Arbeit mit sehr großen Repositories und Listen von Mustern zu optimieren, wurde die Einstellung «git config core.sparseCheckoutCone«, die zulĂ€ssige Vorlagen einschrĂ€nkt (anstatt beliebiger .gitignore-Vorlagen können alle Pfade und alle Dateien in einem bestimmten Unterverzeichnis festgelegt werden, die extrahiert werden sollen). Wenn es in einem großen Repository beispielsweise ein Verzeichnis „A/B/C“ gibt und die gesamte Arbeit sich im Unterverzeichnis „C“ konzentriert, extrahiert der Befehl „git sparse-checkout set A/B/C“ im Sparse-Checkout-Modus den Inhalt von „C“ vollstĂ€ndig, bei „A“ und „B“ jedoch nur die Teile, die fĂŒr die Arbeit mit „C“ erforderlich sind.

  • Aus der Dokumentation („git rebase -h“) wurden alle ErwĂ€hnungen der Option „—preserve-merges“ entfernt, die als veraltet gilt. Stattdessen sollte „git rebase —rebase-merges«.
  • Um die Lesbarkeit der Nachrichten mit Patches, die an Mailing-Listen gesendet werden, zu verbessern, wurde die Option „git format-patch —cover-from-description subject“ hinzugefĂŒgt. Bei Angabe dieser Option wird der erste Absatz des Beschreibungstextes der Branch als Betreff fĂŒr das Begleitschreiben der Patch-SĂ€tze verwendet.
  • Die UnterstĂŒtzung fĂŒr den gemeinsamen Einsatz des Befehls „git apply —3way“ und der Einstellung „merge.conflictStyle“ wurde implementiert. Nun berĂŒcksichtigt „git apply“ den Konfliktbeschreibungstil aus merge.conflictStyle, wenn es notwendig ist, Konflikte nach dem Versuch, eine Patch-Datei auf das Repository anzuwenden, zu lösen.
  • Der Code zur Bestimmung von Funktionen, der in Operationen wie „git diff/grep —show-function/—function-context“ verwendet wird, wurde um die UnterstĂŒtzung zur Bestimmung der Funktionsgrenzen in Programmen in der Sprache Elixir.
  • In „git add“, „git commit“, „git reset“ und andere Befehle wurde eine neue Option „—pathspec-from-file“ hinzugefĂŒgt, die es ermöglicht, eine Liste von Pfaden aus einer Datei oder einem Eingabestrom zu laden, anstatt sie in der Befehlszeile aufzulisten.
  • Ein Problem bei der Erkennung von Umbenennungen auf Verzeichnisebene beim Aufzeichnen von Commits wurde behoben. Die Erkennung funktionierte nicht, wenn der Inhalt eines Unterverzeichnisses in das Wurzelverzeichnis des Repositories verschoben wurde.
  • Es wurde eine erste Implementierung des ĂŒberarbeiteten Befehls „git add -i“ vorgeschlagen, die es ermöglicht, geĂ€nderte Inhalte interaktiv hinzuzufĂŒgen und von Perl nach C umgeschrieben wurde. Eine Ă€hnliche Überarbeitung des Befehls „git add -p“ ist im Gange.
  • Das Kommando „git log —graph“, das eine ASCII-Darstellung des Änderungsverlaufs im Repository erstellt, wurde ĂŒberarbeitet. Die Neugestaltung ermöglicht eine erhebliche Verbesserung und Vereinfachung der Ausgabe, ohne die Struktur der Historie zu verzerren, was beispielsweise das Problem des Überlaufens der Grafik ĂŒber die Zeilenbreite des Terminals gelöst hat.
  • Die Option „git log —format=..“, die das Ausgabeformat Ă€ndern kann,
    wurde um die UnterstĂŒtzung der Flags „l/L“ erweitert, um nur den Teil der E-Mail-Adresse auszugeben, der vor dem Zeichen „@“ angegeben ist (z. B. nĂŒtzlich, wenn alle Entwickler ihre E-Mails in einer DomĂ€ne haben).
  • Der Befehl „git submodule“ hat den Unterbefehl „set-url“ erhalten.
  • Die Test-Suites wurden aktualisiert im Rahmen der Vorbereitung auf
    den Wechsel zum Hash-Algorithmus SHA-2 anstelle von SHA-1.

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