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

Die Veröffentlichung des verteilten Systems zur Verwaltung von Quelltexten Git 2.31 ist jetzt verfĂŒgbar. Git ist eines der beliebtesten, zuverlĂ€ssigsten und leistungsstĂ€rksten Versionsverwaltungssysteme, das flexible Mittel fĂŒr die nichtlineare Entwicklung bietet, die auf Branching und Merging basiert. Um die IntegritĂ€t der Historie und die WiderstandsfĂ€higkeit gegen rĂŒckblickende Änderungen sicherzustellen, wird das implizite Hashing der gesamten vorherigen Historie in jedem Commit verwendet, ebenso ist eine Validierung durch digitale Signaturen der Entwickler fĂŒr einzelne Tags und Commits möglich.

Im Vergleich zur vorherigen Version wurden in die neue Version 679 Änderungen ĂŒbernommen, die mit der Beteiligung von 85 Entwicklern vorbereitet wurden, von denen 23 zum ersten Mal an der Entwicklung teilnahmen. Die wichtigsten Neuerungen sind:

  • Das Kommando „git maintenance“ wurde hinzugefĂŒgt, das es ermöglicht, regelmĂ€ĂŸige Arbeiten auf Systemen, die cron nicht unterstĂŒtzen, auszufĂŒhren. Zum Beispiel kann mit dem neuen Befehl ein periodischer Start des Repository-Packungsprozesses organisiert werden, um nicht auf den Abschluss der Sperrung des Repositories zu warten, wĂ€hrend verschiedene Befehle ausgefĂŒhrt werden. Der Befehl „git maintenance“ ermöglicht es, Optimierungen und Wartungsoperationen fĂŒr die optimale Struktur des Repositories im Hintergrund auszufĂŒhren, ohne die interaktive Sitzung zu blockieren — einmal pro Stunde wird eine Arbeit zur vorausschauenden Speicherung frischer Objekte aus dem entfernten Repository und zur Aktualisierung der Commit-Graphdatei ausgefĂŒhrt, und jede Nacht wird der Packungsprozess des Repositories gestartet.
  • Die UnterstĂŒtzung fĂŒr die Verwaltung der RĂŒckwĂ€rtsindizes (revindex) fĂŒr Packdateien wurde hinzugefĂŒgt. Erinnern wir uns, dass Git alle Daten in Form von Objekten speichert, die in separaten Dateien abgelegt werden. Um die Effizienz der Arbeit mit dem Repository zu erhöhen, werden Objekte zusĂ€tzlich in Packdateien abgelegt, in denen die Informationen in Form eines Stroms von Objekten prĂ€sentiert werden, die aufeinander folgen (ein Ă€hnliches Format wird bei der Übertragung von Objekten mit den Befehlen git fetch und git push verwendet). FĂŒr jede Packdatei wird eine Indexdatei (.idx) erstellt, die es ermöglicht, durch die Objekt-ID sehr schnell den Offset in der Packdatei zu bestimmen, an dem dieses Objekt gespeichert ist. Der in Git 2.31 eingefĂŒhrte RĂŒckwĂ€rtsindex (.rev) zielt darauf ab, den Prozess der Identifizierung der Objekt-ID basierend auf den Informationen ĂŒber die Platzierung des Objekts in der Packdatei zu optimieren.

    FrĂŒher wurde eine solche Umwandlung zur Laufzeit wĂ€hrend der Analyse der Packdatei durchgefĂŒhrt und nur im Speicher gehalten, was eine Wiederverwendung solcher Indizes verhinderte und zwang, den Index jedes Mal neu zu generieren. Der Vorgang zum Erstellen des Indexes beschrĂ€nkt sich auf den Aufbau eines Arrays von „Objekt-Position“-Paaren und dessen Sortierung nach Position, was fĂŒr große Packdateien viel Zeit in Anspruch nehmen kann.

    Zum Beispiel wurde der Vorgang zur Ausgabe des Inhalts von Objekten, bei dem ein direkter Index verwendet wird, 62 Mal schneller ausgefĂŒhrt als der Vorgang zur Anzeige der GrĂ¶ĂŸe von Objekten, fĂŒr den die Daten zur Zuordnung von Position und Objekt nicht indiziert wurden. Nach der Verwendung des RĂŒckwĂ€rtsindex benötigen die genannten VorgĂ€nge ungefĂ€hr die gleiche Zeit. RĂŒckwĂ€rtsindizes ermöglichen auch eine Beschleunigung der ObjektĂŒbertragungsoperationen bei den Befehlen fetch und push, da die bereits fertigen Daten direkt von der Festplatte ĂŒbertragen werden. StandardmĂ€ĂŸig werden RĂŒckwĂ€rtsindizes nicht erstellt; um sie zu generieren, ist es erforderlich, die Einstellung „git config pack.writeReverseIndex true“ zu aktivieren und anschließend das Repository mit dem Befehl „git repack -Ad“ zu packen.

  • Die Leistungsoptimierungen basieren auf der EinfĂŒhrung eines neuen Dateiformats fĂŒr commit-graphs, das zur Optimierung des Zugriffs auf Informationen ĂŒber Commits dient, sowie auf neuen Daten zur Generationsnummer des Commits, die zur Beschleunigung zusĂ€tzlicher VorgĂ€nge mit Commits verwendet werden können.
  • Die Möglichkeit, den Namen des Hauptzweigs, der standardmĂ€ĂŸig in neuen Repositories verwendet wird (Einstellung init.defaultBranch), zu ĂŒberschreiben, wurde hinzugefĂŒgt. Wenn auf externe Repositories zugegriffen wird, versucht Git, den Branch abzurufen, auf den HEAD verweist, d.h. wenn das externe Server Repository standardmĂ€ĂŸig den Branch „main“ verwendet, wird der Befehl „git clone“ versuchen, „main“ lokal abzurufen. In Git 2.31 wird diese Art des Abrufs jetzt auch fĂŒr leere Repositories unterstĂŒtzt. Beispielsweise wird beim lokalen Klonen eines neuen Repositories, bevor die ersten Patches hinzugefĂŒgt werden, die lokale Kopie nun den externen Server Standard-Hauptbranch-Namen enthalten.
  • Dem Befehl „git rev-list“ wurde die Option „—disk-usage“ hinzugefĂŒgt, um zusammenfassende Informationen ĂŒber die GrĂ¶ĂŸe der Objekte anzuzeigen.
  • In Erwartung des bevorstehenden Wechsels des Backends zur DurchfĂŒhrung von ZusammenfĂŒhrungen wurde die Erkennung von Umbenennungen erheblich optimiert.
  • Die UnterstĂŒtzung der veralteten regulĂ€ren Ausdrucksbibliothek PCRE1 wurde eingestellt.
  • Es wird die Möglichkeit eingerĂ€umt, die Verwendung von verkĂŒrzten Links unabhĂ€ngig vom Hash-Algorithmus zwangsweise zu verbieten. Das Verbot wird aktiviert, indem der Wert „no“ dem Parameter core.abbrev zugewiesen wird.
  • Dem Befehl „git rev-parse“ wurde die Option „—path-format=(absolute|relative)“ hinzugefĂŒgt, um die Ausgabe relativer oder absoluter Pfade explizit zu definieren.
  • Das HinzufĂŒgen von Autocompletion-Regeln fĂŒr eigene Unterbefehle von „git“ in Bash-Skripten wurde erleichtert.
  • Dem Befehl „git bundle“ wurde die Option „—stdin“ hinzugefĂŒgt, um Links aus dem Standard-Eingabestrom zu lesen.
  • Dem Befehl „git log“ wurde eine neue Option „—diff-merges=<how>“ hinzugefĂŒgt.
  • Dem Befehl „git ls-files“ wurde die Option „—deduplicatecan“ hinzugefĂŒgt, um Duplikate in der Ausgabe zu eliminieren.
  • Neue Masken zum Ausschließen von Commit-Bereichen wurden hinzugefĂŒgt – „<rev>^!“ und „<rev>^-<n>“.
  • Dem Befehl „git range-diff“ wurden die Optionen „—left-only“ und „—right-only“ hinzugefĂŒgt, um nur eine Seite des vergleichenden Bereichs anzuzeigen.
  • Dem Befehl „git diff“ und „git log“ wurden die Optionen „—skip-to=<path>“ und „—rotate-to=<path>“ hinzugefĂŒgt, um Beginnwege zu ĂŒberspringen oder zum Ende zu verschieben.
  • Dem Befehl „git difftool“ wurde die Option „—skip-to=<path>“ hinzugefĂŒgt, um die unterbrochene Sitzung von einem beliebigen Pfad aus fortzusetzen.
  • Der Verhaltenskodex (Code-of-conduct), der die grundlegenden Prinzipien zur Lösung konfliktĂ€rer Situationen zwischen Entwicklern festlegt, wurde auf Version 2.0 aktualisiert (zuvor wurde Version 1.4 verwendet).

    Quelle: opennet.ru
ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster