Veröffentlichung des verteilten Systems zur Verwaltung von Quelltexten Git 2.25

VerfĂŒgbar Veröffentlichung des verteilten Systems zur Verwaltung von Quelltexten Git 2.25.0Git ist eines der beliebtesten, zuverlĂ€ssigsten und leistungsstĂ€rksten Versionskontrollsysteme, das flexible Mittel fĂŒr die nichtlineare Entwicklung bietet, die auf Verzweigung und ZusammenfĂŒhrung von Branches basieren. Um die IntegritĂ€t der Historie und die WiderstandsfĂ€higkeit gegen nachtrĂ€gliche Änderungen zu gewĂ€hrleisten, wird das implizite Hashing der gesamten vorherigen Historie in jedem Commit verwendet; es ist auch möglich, einzelne Tags und Commits mit digitalen Signaturen der Entwickler zu authentifizieren.

Im Vergleich zur vorherigen Version wurden in die neue Version 583 Änderungen aufgenommen, die mit UnterstĂŒtzung von 84 Entwicklern vorbereitet wurden, von denen 32 zum ersten Mal an der Entwicklung teilgenommen haben. Haupt- Neuheiten:

  • Die Möglichkeit des partiellen Klonens (partial clones), die es ermöglicht, nur einen Teil der Daten zu ĂŒbertragen und mit einer unvollstĂ€ndigen Kopie des Repositories zu arbeiten, rĂŒckt nĂ€her an die Stabilisierung und vollstĂ€ndige Bereitschaft. Beim normalen Klonen werden alle Daten aus dem Repository kopiert, einschließlich jeder Version jeder Datei aus der Historie der Änderungen. Bei sehr großen Repositories fĂŒhrt das Kopieren der Daten zu einem erheblichen Anstieg des Datenverkehrs und des Speicherplatzes, selbst wenn den Entwicklern nur eine Teilmenge von Dateien von Interesse ist. Um das Abrufen nur eines Teils des Arbeitsbaums von Quelltexten zu vereinfachen, wird in dieser neuen Version der experimentelle Befehl „sparse-checkout“ und die neue Option „—sparse“ fĂŒr den Befehl „clone“ angeboten.

    Zuvor wurde der Prozess des selektiven Klonens durch die Festlegung von Filtern zum Herausfiltern ĂŒberflĂŒssiger Inhalte und die Option „—no-checkout“ zum Deaktivieren des NachfĂŒllens fehlender Dateien durchgefĂŒhrt. Danach musste vor der AusfĂŒhrung der Checkout-Operation die Einstellung core.sparseCheckout aktiviert und in der Datei .git/info/sparse-checkout eine Liste von Vorlagen fĂŒr auszuschließende Pfade definiert werden. Zum Beispiel konnte man, um ohne Blobs zu klonen und das Herausziehen von Dateien aus verschachtelten Verzeichnissen mit einer Tiefe von 2 oder mehr zu verbieten, 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 der Arbeit mit einem unvollstĂ€ndigen Repository auf die Befehle:

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

    Der Befehl sparse-checkout ermöglicht es, eine Liste von Pfaden fĂŒr den Checkout (set) festzulegen, ohne .git/info/sparse-checkout manuell anpassen zu mĂŒssen, sowie die aktuelle Liste von Pfaden (list) anzuzeigen und partielle Checkouts (enable/disable) ein- oder auszuschalten.

    Zur Optimierung der Arbeit mit sehr großen Repositories und Vorlagenlisten wurde die Einstellung „git config core.sparseCheckoutCone„ eingefĂŒhrt, die die zulĂ€ssigen Muster einschrĂ€nkt (anstatt beliebiger Muster in .gitignore kann festgelegt werden, ob alle Pfade und Dateien in einem bestimmten Unterverzeichnis extrahiert werden sollen). Wenn in einem großen Repository beispielsweise ein Verzeichnis „A/B/C“ existiert und alle Arbeiten im Unterverzeichnis „C“ konzentriert sind, wird im sparsamen Modus „sparseCheckoutCone“ der Befehl „git sparse-checkout set A/B/C“ den Inhalt von „C“ vollstĂ€ndig extrahieren, jedoch nur die Teile aus „A“ und „B“, die zur Arbeit mit „C“ notwendig sind.

  • Aus der Dokumentation („git rebase -h“) wurden alle ErwĂ€hnungen der Option „—preserve-merges“ entfernt, die als veraltet gilt. Stattdessen sollte fĂŒr das Übertragen einer Gruppe von Commits „git rebase —rebase-merges«.
  • verwendet werden. Um die Lesbarkeit der in Mailinglisten gesendeten Patch-Nachrichten zu verbessern, wurde die Option „git format-patch —cover-from-description subject“ hinzugefĂŒgt, mit der der erste Absatz des Beschreibungstextes des Branches als Betreff fĂŒr das Begleitschreiben der Patch-Gruppe verwendet wird.
  • Die UnterstĂŒtzung fĂŒr die gemeinsame Verwendung des Befehls „git apply —3way“ und der Einstellung „merge.conflictStyle“ wurde implementiert („git apply“ berĂŒcksichtigt jetzt den Konfliktstil aus merge.conflictStyle bei Bedarf zur Konfliktlösung nach dem Versuch, eine Patch-Datei im Repository anzuwenden).
  • Der Code zur Funktionsbestimmung, 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 erweitert. Elixir.
  • In „git add“, „git commit“, „git reset“ und anderen Befehlen 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.
  • Es wurde ein Problem mit der Bestimmung von Umbenennungen auf Verzeichnisebene bei der Aufzeichnung von Commits behoben. Die Bestimmung funktionierte nicht, wenn der Inhalt eines Unterverzeichnisses in das Root-Verzeichnis des Repositories verschoben wurde.
  • Eine erste Implementierung des ĂŒberarbeiteten Befehls „git add -i“ wurde vorgeschlagen, der es ermöglicht, geĂ€nderte Inhalte interaktiv hinzuzufĂŒgen und von Perl auf C umgeschrieben wurde. Ein Ă€hnlicher Umbau des Befehls „git add -p“ erfolgt ebenfalls.
  • Das Team „git log —graph“ wurde neu strukturiert, um eine ASCII-Darstellung des Commit-Histogramms im Repository zu erstellen. Die Überarbeitung hat es ermöglicht, die Ausgabe erheblich zu verbessern und zu vereinfachen, ohne die Struktur der Historie zu verzerren, was beispielsweise das Problem mit dem Überlaufen der Darstellung ĂŒber die Breite der Terminalzeile gelöst hat.
  • Die Option „git log —format=..“, die es ermöglicht, das Ausgabeformat zu Ă€ndern,
    wurde um die UnterstĂŒtzung der Flags „l/L“ erweitert, um nur den Teil der E-Mail-Adresse vor dem Symbol „@“ auszugeben (z. B. nĂŒtzlich, wenn alle Entwickler E-Mails in derselben Domain haben).
  • Der Befehl „git submodule“ hat einen neuen Unterbefehl „set-url“ erhalten.
  • Die TestfĂ€lle wurden im Rahmen der Vorbereitung auf die Umstellung auf
    den Hash-Algorithmus SHA-2 anstelle von SHA-1 aktualisiert.

Quelle: opennet.ru

60GB SSD 8Gb DDR4