Veröffentlichung des verteilten Versionskontrollsystems Git 2.26

VerfĂŒgbar Veröffentlichung des verteilten Systems zur Verwaltung von Quelltexten Git 2.26.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 504 Änderungen aufgenommen, die von 64 Entwicklern vorbereitet wurden, von denen 12 erstmals an der Entwicklung teilgenommen haben. Haupt- Neuheiten:

  • Der Standardwechsel zu der zweiten Version des Git-Kommunikationsprotokolls wurde vollzogen, welches bei der Remote-Verbindung des Clients mit dem Git-Server verwendet wird. Die zweite Protokollversion ermöglicht es, Branches und Tags serverseitig zu filtern und dem Client lediglich eine verkĂŒrzte Liste von Referenzen zu ĂŒbermitteln. Zuvor wurde bei der AusfĂŒhrung eines beliebigen Fetch-Befehls dem Client immer die vollstĂ€ndige Liste der Referenzen im gesamten Repository gesendet, selbst wenn der Client nur einen Branch aktualisierte oder die AktualitĂ€t seiner Repository-Kopie prĂŒfte. Eine weitere bemerkenswerte Neuerung ist die Möglichkeit, neue Funktionen in das Protokoll einzufĂŒhren, sobald neue FunktionalitĂ€ten in den Werkzeugen verfĂŒgbar sind. Der Client-Code bleibt mit dem alten Protokoll kompatibel und kann weiterhin sowohl mit neuen als auch mit alten Servern arbeiten, indem er automatisch auf die erste Version zurĂŒckfĂ€llt, falls der Server die zweite nicht unterstĂŒtzt.
  • Im Befehl „git config“ wurde die Option „—show-scope“ hinzugefĂŒgt, die es erleichtert, den Ort zu ermitteln, an dem bestimmte Einstellungen definiert sind. Git erlaubt es, Einstellungen an verschiedenen Orten zu definieren: im Repository (.git/info/config), im Benutzerverzeichnis (~/ .gitconfig), in der globalen Konfigurationsdatei (/etc/gitconfig) sowie ĂŒber Befehlszeilenoptionen und Umgebungsvariablen. Es ist oft schwierig zu verstehen, wo genau eine gesuchte Einstellung definiert ist. Um dieses Problem zu lösen, war zuvor die Option „—show-origin“ verfĂŒgbar, die jedoch nur den Pfad zur Datei anzeigt, in der die Einstellung definiert ist, was nĂŒtzlich ist, wenn man die Datei bearbeiten möchte, jedoch nicht hilft, wenn der Wert ĂŒber „git config“ mit den Optionen „—system“, „—global“ oder „—local“ geĂ€ndert werden soll. Die neue Option „—show-scope“ zeigt den Kontext der Variablen an und kann in Kombination mit „—show-origin“ verwendet werden:

    $ git —list —show-scope —show-origin
    global file:/home/user/.gitconfig diff.interhunkcontext=1
    global file:/home/user/.gitconfig push.default=current
    [
]
    local file:.git/config branch.master.remote=origin
    local file:.git/config branch.master.merge=refs/heads/master

    $ git config —show-scope —get-regexp 'diff.*'
    global diff.statgraphwidth 35
    local diff.colormoved plain

    $ git config —global —unset diff.statgraphwidth

  • In den Bindingseinstellungen von Anmeldedaten Die Verwendung von Platzhaltern in URLs ist erlaubt. Alle HTTP-Einstellungen und Git-Anmeldeinformationen können sowohl fĂŒr alle Verbindungen (http.extraHeader, credential.helper) als auch fĂŒr Verbindungen, die an die URL gebunden sind (credential.https://example.com.helper, credential.https://example.com.helper), festgelegt werden. Bisher war die Verwendung von Platzhaltern wie *.example.com nur fĂŒr HTTP-Einstellungen zulĂ€ssig, wurde jedoch nicht fĂŒr die Bindung von Anmeldeinformationen unterstĂŒtzt. In Git 2.26 wurden diese Unterschiede beseitigt, und beispielsweise kann zur Bindung eines Benutzernamens an alle Subdomains jetzt Folgendes angegeben werden:

    [credential «https://*.example.com»]

    username = ttaylorr

  • Die experimentelle UnterstĂŒtzung fĂŒr partielle Klone (partial clones) wird weiterhin ausgebaut, wodurch es möglich ist, nur einen Teil der Daten zu ĂŒbertragen und mit einer unvollstĂ€ndigen Kopie des Repositories zu arbeiten. In der neuen Version wurde der neue Befehl „git sparse-checkout add“ hinzugefĂŒgt, mit dem einzelne Verzeichnisse zur Anwendung der „Checkout“-Operation nur auf einen Teil des Arbeitsbaums hinzugefĂŒgt werden können, anstatt alle Ă€hnlichen Verzeichnisse auf einmal ĂŒber den Befehl „git sparse-checkout set“ aufzulisten (Verzeichnisse können einzeln hinzugefĂŒgt werden, ohne die gesamte Liste jedes Mal erneut anzugeben).
    Zum Beispiel, um das Repository git/git zu klonen, ohne Blobs zu ĂŒbertragen, die ÜberprĂŒfung nur auf das Wurzelverzeichnis der Arbeitskopie zu beschrĂ€nken und getrennte Markierungen fĂŒr die Verzeichnisse „t“ und „Documentation“ zu ziehen, kann Folgendes angegeben werden:

    $ git clone —filter=blob:none —sparse git@github.com:git/git.git

    $ cd git
    $ git sparse-checkout init —cone

    $ git sparse-checkout add t
    
.
    $ git sparse-checkout add Documentation
    
.
    $ git sparse-checkout list
    Documentation
    t

  • Die Leistung des Befehls „git grep“, der sowohl im aktuellen Inhalt des Repositories als auch in historischen Revisionen verwendet wird, wurde erheblich verbessert. Um die Suche zu beschleunigen, war das Scannen des Inhalts des Arbeitsbaums mit mehreren Threads („git grep —threads“) zulĂ€ssig, aber die Suche in historischen Revisionen war einstufig. Dieses Limit wurde nun durch die Implementierung der Möglichkeit, Leseoperationen aus dem Objektspeicher zu parallelisieren, aufgehoben. StandardmĂ€ĂŸig wird die Anzahl der Threads auf die Anzahl der CPU-Kerne gesetzt, was in den meisten FĂ€llen jetzt keine explizite Festlegung der Option „—threads“ erfordert.
  • Die UnterstĂŒtzung fĂŒr die automatische VervollstĂ€ndigung von Unterbefehlen, Pfaden, Links und anderen Argumenten des Befehls „git worktree“, der das Arbeiten mit mehreren Arbeitskopien eines Repositories ermöglicht, wurde hinzugefĂŒgt.
  • Die UnterstĂŒtzung fĂŒr helle Farben wurde hinzugefĂŒgt, fĂŒr die ANSI Escape-Sequenzen vorhanden sind. Zum Beispiel kann in den Farbeinstellungen der Hervorhebung „git config —color“ oder „git diff —color-moved“ ĂŒber die Option „—format“ fĂŒr hellblau „%C(brightblue)“ angegeben werden.
  • Eine neue Version des Skripts wurde hinzugefĂŒgt. fsmonitor-watchman, das die Integration mit dem Mechanismus ermöglicht. Facebook Watchman zur Beschleunigung der Verfolgung von DateiĂ€nderungen und dem Erscheinen neuer Dateien. Nach der Aktualisierung von Git wird benötigt: ersetzt werden kann ein Hook im Repository.
  • Optimierungen zur Beschleunigung von TeilklonvorgĂ€ngen (partial clones) wurden hinzugefĂŒgt, die mit der Anwendung von Bitmaps zusammenhĂ€ngen,
    (Bitmap-Maschine), um eine vollstĂ€ndige Durchsuchung aller Objekte wĂ€hrend der Antwortfilterung zu vermeiden. Die PrĂŒfung auf Blobs (—filter=blob:none und —filter=blob:limit=n) erfolgt beim Teilklonen jetzt
    deutlich schneller. GitHub hat angekĂŒndigt, die Patches mit diesen Optimierungen und die experimentelle UnterstĂŒtzung fĂŒr TeilklonvorgĂ€nge anzuwenden.
  • Der Befehl „git rebase“ wurde auf einen anderen Backend umgestellt, der standardmĂ€ĂŸig den Mechanismus „merge“ verwendet (frĂŒher fĂŒr „rebase -i“ benutzt) anstelle von „patch+apply“. In einigen Details unterscheiden sich die Backends, zum Beispiel schlĂ€gt das neue Backend nach der Fortsetzung des Vorgangs nach der Konfliktbehebung (git rebase —continue) vor, die Commit-Nachricht zu bearbeiten, wĂ€hrend das alte einfach die alte Nachricht verwendet hat. Um das alte Verhalten wiederherzustellen, kann die Option „—apply“ verwendet oder die Konfigurationsvariable „rebase.backend“ auf den Wert „apply“ gesetzt werden.
  • Ein Beispiel fĂŒr einen Authentifizierungsparameter-Handler, der ĂŒber .netrc festgelegt wurde, wurde in eine fĂŒr den sofortigen Gebrauch geeignete Form gebracht.
  • Die Einstellung gpg.minTrustLevel wurde hinzugefĂŒgt, um das minimale Vertrauensniveau fĂŒr verschiedene Elemente festzulegen, die die digitale Signatur ĂŒberprĂŒfen.
  • In „git rm“ und „git stash“ wurde die Option „—pathspec-from-file“ hinzugefĂŒgt.
  • Die Verbesserung der Testsammlungen wird im Rahmen der Vorbereitung auf den Wechsel zu dem Hash-Algorithmus SHA-2 anstelle von SHA-1 fortgesetzt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4