Veröffentlichung des verteilten versionierten Systems . 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 504 Ănderungen aufgenommen, die mit UnterstĂŒtzung von 64 Entwicklern vorbereitet wurden, von denen 12 erstmals an der Entwicklung mitwirkten. :
- Der Standard wurde auf des Kommunikationsprotokolls Git, das beim Remote-Zugriff des Clients auf den Git-Server verwendet wird. Die zweite Version des Protokolls ist bemerkenswert, da sie die Möglichkeit bietet, Branches und Tags auf der Serverseite zu filtern, was dem Client eine verkĂŒrzte Liste von Referenzen zurĂŒckgibt. Zuvor erhielt der Client bei der AusfĂŒhrung eines Befehls zum Abrufen stets die vollstĂ€ndige Liste der Referenzen im gesamten Repository, selbst wenn er nur einen Branch aktualisierte oder die AktualitĂ€t seiner Repository-Kopie ĂŒberprĂŒfte. Eine weitere bemerkenswerte Neuerung ist die Möglichkeit, dem Protokoll neue Funktionen hinzuzufĂŒgen, sobald neue FunktionalitĂ€ten im Werkzeugkasten 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ĂŒckgreift, falls der Server die zweite nicht unterstĂŒtzt.
- Der Befehl âgit configâ hat die Option ââshow-scopeâ hinzugefĂŒgt, die es erleichtert, den Ort zu identifizieren, an dem bestimmte Einstellungen definiert sind. Git ermöglicht die Definition von Einstellungen an verschiedenen Orten: im Repository (.git/info/config), im Benutzerverzeichnis (~/.gitconfig), in der systemweiten Konfigurationsdatei (/etc/gitconfig) sowie ĂŒber Befehlszeilenoptionen und Umgebungsvariablen. Bei der AusfĂŒhrung von âgit configâ ist es ziemlich schwierig zu verstehen, wo genau die gesuchte Einstellung definiert ist. Um dieses Problem zu lösen, war die Option ââshow-originâ verfĂŒgbar, die lediglich 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 man den Wert ĂŒber âgit configâ mit den Optionen ââsystemâ, ââglobalâ oder ââlocalâ Ă€ndern möchte. Die neue Option ââshow-scopeâ zeigt den Kontext der Variablenbestimmung an und kann zusammen 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 Bindungseinstellungen Die Verwendung von Platzhaltern in URLs ist erlaubt. Alle Einstellungen fĂŒr HTTP und Anmeldedaten in Git können sowohl fĂŒr alle Verbindungen (http.extraHeader, credential.helper) als auch fĂŒr URL-spezifische Verbindungen (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, aber nicht fĂŒr die Bindung von Anmeldedaten. In Git 2.26 wurden diese Unterschiede behoben, sodass beispielsweise zur Bindung eines Benutzernamens an alle Subdomains nun Folgendes angegeben werden kann:
[credential «https://*.example.com»]
username = ttaylorr
- Die experimentelle UnterstĂŒtzung fĂŒr partielle Klonierung (partial clones) wurde weiter ausgebaut, wodurch nur ein Teil der Daten ĂŒbertragen und mit einer unvollstĂ€ndigen Kopie des Repositories gearbeitet werden kann. In dieser neuen Version wurde der Befehl "git sparse-checkout add" hinzugefĂŒgt, der es ermöglicht, einzelne Verzeichnisse fĂŒr die Anwendung der "checkout"-Operation nur auf einen Teil des Arbeitsbaums hinzuzufĂŒgen, anstatt alle Ă€hnlichen Verzeichnisse gleichzeitig ĂŒber den Befehl "git sparse-checkout set" aufzulisten (es können Verzeichnisse einzeln hinzugefĂŒgt werden, ohne die gesamte Liste jedes Mal erneut angeben zu mĂŒssen).
Zum Beispiel, um das Repository git/git zu klonen, ohne Blobs zu ĂŒbertragen, die ĂberprĂŒfung nur auf das Stammverzeichnis der Arbeitskopie zu beschrĂ€nken und eine separate Kennzeichnung fĂŒr das Abrufen der Verzeichnisse âtâ und âDocumentationâ anzugeben, können Sie Folgendes verwenden:$ 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â wurde erheblich verbessert, wenn er sowohl im aktuellen Inhalt des Repositories als auch in historischen Revisionen zur Suche verwendet wird. Um die Suche zu beschleunigen, war es möglich, den Inhalt des Arbeitsverzeichnisses mit mehreren Threads zu scannen (âgit grep âthreadsâ), jedoch war die Suche in historischen Revisionen einstufig. Diese EinschrĂ€nkung wurde jetzt durch die Implementierung der Möglichkeit, LesevorgĂ€nge aus dem Objektspeicher zu parallelisieren, aufgehoben. StandardmĂ€Ăig wird die Anzahl der Threads auf die Anzahl der CPU-Kerne eingestellt, was in den meisten FĂ€llen die explizite Angabe der Option ââthreadsâ ĂŒberflĂŒssig macht.
- UnterstĂŒtzung fĂŒr die automatische VervollstĂ€ndigung von Subkommandos, Pfaden, Links und anderen Argumenten des Befehls âgit worktreeâ hinzugefĂŒgt, die das Arbeiten mit mehreren Arbeitskopien eines Repositories ermöglicht.
- UnterstĂŒtzung fĂŒr helle Farben hinzugefĂŒgt, die ANSI-Escape-Sequenzen unterstĂŒtzen. Beispielsweise können in den Farbkonfigurationen âgit config âcolorâ oder âgit diff âcolor-movedâ ĂŒber die Option ââformatâ fĂŒr hellblau â%C(brightblue)â angegeben werden.
- Eine neue Version des Skripts hinzugefĂŒgt , die eine Integration mit dem Mechanismus zur Beschleunigung der Ăberwachung von DateiĂ€nderungen und dem Erscheinen neuer Dateien gewĂ€hrleistet. Nach dem Update von git ist es erforderlich, den Optimierungen zur Beschleunigung von partiellen KlonvorgĂ€ngen (partial clones) hinzugefĂŒgt, die mit der Anwendung von Bitmaps (bitmap machinery) verbunden sind, um eine vollstĂ€ndige Durchsuchung aller Objekte wĂ€hrend der Ausgabe-Filterung zu vermeiden. Die ĂberprĂŒfung von Blobs (âfilter=blob:none und âfilter=blob:limit=n) wird beim partiellen Klonen jetzt
- Optimierungen wurden hinzugefĂŒgt, um die VorgĂ€nge des partiellen Klonens (partial clones) durch den Einsatz von Bitmaps zu beschleunigen.
deutlich schneller durchgefĂŒhrt. GitHub hat angekĂŒndigt, die Patches mit diesen Optimierungen und die experimentelle UnterstĂŒtzung fĂŒr partielle KlonvorgĂ€nge anzuwenden.
Deutlich schneller. GitHub hat die Anwendung von Patches mit diesen Optimierungen und die experimentelle UnterstĂŒtzung fĂŒr das partielle Klonen angekĂŒndigt. - Der Befehl âgit rebaseâ wurde auf eine andere Backend-Implementierung umgestellt, die standardmĂ€Ăig die âmergeâ-Technik verwendet (frĂŒher fĂŒr ârebase -iâ genutzt), anstelle von âpatch+applyâ. In einigen Aspekten unterscheiden sich die Backends; zum Beispiel bietet das neue Backend nach Fortsetzung der Operation nach der Behebung von Konflikten (git rebase --continue) die Möglichkeit, die Commit-Nachricht zu bearbeiten, wĂ€hrend das alte einfach die vorherige Nachricht ĂŒbernommen hat. Um das alte Verhalten wiederherzustellen, kann die Option â--applyâ verwendet oder die Konfigurationsvariable ârebase.backendâ auf âapplyâ gesetzt werden.
- Ein Beispiel fĂŒr einen Handler fĂŒr Authentifizierungsparameter, die ĂŒber .netrc definiert sind, wurde in eine sofort einsatzbereite Form gebracht.
- Die Einstellung gpg.minTrustLevel wurde hinzugefĂŒgt, um ein minimales Vertrauensniveau fĂŒr verschiedene Elemente festzulegen, die digitale Signaturen ĂŒberprĂŒfen.
- Bei âgit rmâ und âgit stashâ wurde die Option â--pathspec-from-fileâ hinzugefĂŒgt.
- Die Verbesserung der Test-Suites wurde fortgesetzt, um den Ăbergang zum SHA-2-Hashalgorithmus anstelle von SHA-1 vorzubereiten.
Quelle: opennet.ru
