Veröffentlichung des verteilten Versionsverwaltungssystems Git 2.26

Verfügbar Veröffentlichung eines verteilten Versionsverwaltungssystems Git 2.26.0. Git ist eines der beliebtesten, zuverlässigsten und leistungsstärksten Versionskontrollsysteme und bietet flexible nichtlineare Entwicklungstools basierend auf Verzweigung und Zusammenführung. Um die Integrität des Verlaufs und die Widerstandsfähigkeit gegen rückwirkende Änderungen sicherzustellen, wird in jedem Commit ein implizites Hashing des gesamten vorherigen Verlaufs verwendet; es ist auch möglich, einzelne Tags und Commits mit digitalen Signaturen der Entwickler zu zertifizieren.

Im Vergleich zur Vorgängerversion enthielt die neue Version 504 Änderungen, die unter Beteiligung von 64 Entwicklern erstellt wurden, von denen 12 erstmals an der Entwicklung beteiligt waren. Haupt- Innovationen:

  • Die Standardeinstellung wurde geändert zweite Version Git-Kommunikationsprotokoll, das verwendet wird, wenn ein Client eine Remoteverbindung zu einem Git-Server herstellt. Die zweite Version des Protokolls zeichnet sich dadurch aus, dass sie die Möglichkeit bietet, Zweige und Tags auf der Serverseite zu filtern und eine verkürzte Liste von Links an den Client zurückzugeben. Bisher sendete jeder Pull-Befehl dem Client immer die vollständige Liste der Referenzen im gesamten Repository, selbst wenn der Client nur einen Zweig aktualisierte oder überprüfte, ob seine Kopie des Repositorys auf dem neuesten Stand war. Eine weitere bemerkenswerte Neuerung ist die Möglichkeit, dem Protokoll neue Funktionen hinzuzufügen, sobald neue Funktionen im Toolkit verfügbar werden. Der Client-Code bleibt mit dem alten Protokoll kompatibel und kann sowohl mit neuen als auch mit alten Servern weiterhin funktionieren, wobei er automatisch auf die erste Version zurückgreift, wenn der Server die zweite nicht unterstützt.
  • Dem Befehl „git config“ wurde die Option „-show-scope“ hinzugefügt, die es einfacher macht, den Ort zu identifizieren, an dem bestimmte Einstellungen definiert sind. Mit Git können Sie Einstellungen an verschiedenen Orten definieren: im Repository (.git/info/config), im Benutzerverzeichnis (~/.gitconfig), in der systemweiten Konfigurationsdatei (/etc/gitconfig) und per Befehl Zeilenoptionen und Umgebungsvariablen. Beim Ausführen von „git config“ ist es ziemlich schwierig zu verstehen, wo genau die gewünschte Einstellung definiert ist. Um dieses Problem zu lösen, war die Option „--show-origin“ verfügbar, die jedoch nur den Pfad zu der Datei anzeigt, in der die Einstellung definiert ist. Dies ist nützlich, wenn Sie beabsichtigen, die Datei zu bearbeiten, aber nicht hilfreich, wenn Sie dies tun Sie müssen den Wert über „git config“ mit den Optionen „--system“, „--global“ oder „-local“ ändern. Die neue Option „--show-scope“ zeigt den Variablendefinitionskontext an und kann in Verbindung mit -show-origin verwendet werden:

    $ git --list --show-scope --show-origin
    globale Datei:/home/user/.gitconfig diff.interhunkcontext=1
    globale Datei:/home/user/.gitconfig push.default=current
    […] lokale Datei:.git/config branch.master.remote=origin
    lokale Datei:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    globale diff.statgraphwidth 35
    lokale diff.colormoved plain

    $ git config --global --unset diff.statgraphwidth

  • In den Bindungseinstellungen Referenzen Die Verwendung von Masken in URLs ist erlaubt. Beliebige HTTP-Einstellungen und Anmeldeinformationen in Git können sowohl für alle Verbindungen (http.extraHeader, credential.helper) als auch für URL-basierte Verbindungen (credential.https://example.com.helper, credential.https://example) festgelegt werden. com.helper). Bisher waren Platzhalter wie *.example.com nur für HTTP-Einstellungen zulässig, wurden jedoch für die Anmeldeinformationsbindung nicht unterstützt. In Git 2.26 wurden diese Unterschiede beseitigt und um beispielsweise einen Benutzernamen an alle Subdomains zu binden, können Sie jetzt Folgendes angeben:

    [Anmeldeinformationen „https://*.example.com“]

    Benutzername = ttaylorr

  • Die Erweiterung der experimentellen Unterstützung für teilweises Klonen (partielles Klonen) wird fortgesetzt, sodass Sie nur einen Teil der Daten übertragen und mit einer unvollständigen Kopie des Repositorys arbeiten können. Die neue Version fügt einen neuen Befehl „git sparse-checkout add“ hinzu, der es Ihnen ermöglicht, einzelne Verzeichnisse hinzuzufügen, um den „Checkout“-Vorgang nur auf einen Teil des Arbeitsbaums anzuwenden, anstatt alle solchen Verzeichnisse auf einmal über den Befehl „git sparse-checkout set“ (Sie können ein Verzeichnis nach dem anderen hinzufügen, ohne jedes Mal die gesamte Liste neu anzugeben).
    Um beispielsweise ein Git/Git-Repository zu klonen, ohne Blobs festzuschreiben, das Auschecken nur auf das Stammverzeichnis der Arbeitskopie zu beschränken und das Auschecken für die Verzeichnisse „t“ und „Documentation“ separat zu markieren, könnten Sie Folgendes angeben:

    $ git clone --filter=blob:none --sparse [E-Mail geschützt] :git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout t hinzufügen
    ....
    $ git sparse-checkout Dokumentation hinzufügen
    ....
    $ git Sparse-Checkout-Liste
    Dokumentation
    t

  • Die Leistung des Befehls „git grep“, mit dem sowohl der aktuelle Inhalt des Repositorys als auch historische Revisionen durchsucht werden, wurde erheblich verbessert. Um die Suche zu beschleunigen, war es möglich, den Inhalt des Arbeitsbaums mit mehreren Threads („git grep –threads“) zu scannen, die Suche in historischen Revisionen erfolgte jedoch Single-Threaded. Diese Einschränkung wurde nun durch die Implementierung der Möglichkeit zur Parallelisierung von Lesevorgängen aus dem Objektspeicher aufgehoben. Standardmäßig ist die Anzahl der Threads gleich der Anzahl der CPU-Kerne eingestellt, was in den meisten Fällen keine explizite Einstellung der Option „-threads“ erfordert.
  • Unterstützung für die automatische Vervollständigung der Eingabe von Unterbefehlen, Pfaden, Links und anderen Argumenten des Befehls „git worktree“ hinzugefügt, wodurch Sie mit mehreren Arbeitskopien des Repositorys arbeiten können.
  • Unterstützung für helle Farben mit ANSI-Escape-Sequenzen hinzugefügt. Beispielsweise können Sie in den Einstellungen für Hervorhebungsfarben „git config –color“ oder „git diff –color-moved“ über die Option „--format“ für helles Blau „%C(brightblue)“ angeben.
  • Neue Version des Skripts hinzugefügt fsmonitor-watchman, was die Integration in den Mechanismus ermöglicht Facebook Watchman um die Verfolgung von Dateiänderungen und das Erscheinen neuer Dateien zu beschleunigen. Nach dem Update ist Git erforderlich ersetzen Haken Sie das Repository ein.
  • Optimierungen hinzugefügt, um Teilklone bei der Verwendung von Bitmaps zu beschleunigen
    (Bitmap-Maschinerie), um beim Filtern der Ausgabe eine vollständige Suche aller Objekte zu vermeiden. Die Prüfung auf Blobs (—filter=blob:none und –filter=blob:limit=n) während des teilweisen Klonens wird jetzt durchgeführt
    deutlich schneller. GitHub hat Patches mit diesen Optimierungen und experimenteller Unterstützung für teilweises Klonen angekündigt.

  • Der Befehl „git rebase“ wurde in ein anderes Backend verschoben, das den standardmäßigen „Merge“-Mechanismus (zuvor für „rebase -i“ verwendet) anstelle von „patch+apply“ verwendet. Die Backends unterscheiden sich in einigen kleinen Punkten, zum Beispiel bietet das neue Backend nach dem Fortsetzen einer Operation nach der Lösung eines Konflikts (git rebase --continue) an, die Commit-Nachricht zu bearbeiten, während das alte einfach die alte Nachricht verwendet. Um zum alten Verhalten zurückzukehren, können Sie die Option „--apply“ verwenden oder die Konfigurationsvariable „rebase.backend“ auf „apply“ setzen.
  • Ein Beispiel für einen Handler für Authentifizierungsparameter, die über .netrc angegeben werden, wurde auf eine für den sofortigen Einsatz geeignete Form reduziert.
  • Die Einstellung gpg.minTrustLevel wurde hinzugefügt, um die Mindestvertrauensstufe für verschiedene Elemente festzulegen, die die Überprüfung digitaler Signaturen durchführen.
  • Option „--pathspec-from-file“ zu „git rm“ und „git stash“ hinzugefügt.
  • Die Verbesserung der Testsuiten wurde in Vorbereitung auf den Übergang zum SHA-2-Hashing-Algorithmus anstelle von SHA-1 fortgesetzt.

Source: opennet.ru

Kommentar hinzufügen