Veröffentlichung des verteilten Versionskontrollsystems Git 2.31

Die neue Version des verteilten Versionskontrollsystems Git 2.31 ist jetzt verfĂŒgbar. Git ist eines der beliebtesten, zuverlĂ€ssigsten und leistungsstĂ€rksten Versionskontrollsysteme und bietet flexible, nichtlineare Entwicklungsmöglichkeiten, die auf Branching und Merging basieren. Um die IntegritĂ€t der Historie zu gewĂ€hrleisten und die WiderstandsfĂ€higkeit gegen nachtrĂ€gliche Änderungen zu gewĂ€hrleisten, kommt eine implizite Hashierung der gesamten vorherigen Historie in jedem Commit zum Einsatz; außerdem ist die digitale Signatur von Entwicklern fĂŒr bestimmte Tags und Commits möglich.

Im Vergleich zur vorherigen Version wurden 679 Änderungen ĂŒbernommen, an denen 85 Entwickler beteiligt waren, von denen 23 erstmals an der Entwicklung mitwirkten. Zu den wichtigsten Neuerungen gehören:

  • Der Befehl »git maintenance« wurde hinzugefĂŒgt, um regelmĂ€ĂŸige Aufgaben auf Systemen auszufĂŒhren, die cron nicht unterstĂŒtzen. Mit diesem neuen Befehl können Sie beispielsweise einen regelmĂ€ĂŸigen Prozess zur Archivierung des Repositories einrichten, ohne darauf warten zu mĂŒssen, dass die Sperre des Repositories beim automatischen Archivieren wĂ€hrend der AusfĂŒhrung verschiedener Befehle abgeschlossen ist. Der Befehl »git maintenance« ermöglicht es, Optimierungen und Wartungsoperationen zur Aufrechterhaltung der optimalen Struktur des Repositories im Hintergrund auszufĂŒhren, ohne die interaktive Sitzung zu blockieren – jede Stunde wird eine Aufgabe zur proaktiven Abholung neuer Objekte aus dem Remote-Repository und zur Aktualisierung der Commits-Grafdatei ausgefĂŒhrt, und jede Nacht wird der Prozess zur Archivierung des Repositories gestartet.
  • Die UnterstĂŒtzung fĂŒr die Erstellung von umgekehrten Indizes (revindex) fĂŒr Pack-Dateien wurde hinzugefĂŒgt. Wie bereits erwĂ€hnt, speichert Git alle Daten in Form von Objekten, die in separaten Dateien abgelegt werden. Um die Effizienz der Arbeit mit einem Repository zu erhöhen, werden Objekte zusĂ€tzlich in Pack-Dateien gespeichert, in denen die Informationen in Form eines Streams von aufeinanderfolgenden Objekten dargestellt sind (ein Ă€hnliches Format wird beim Übertragen von Objekten mit den Befehlen git fetch und git push verwendet). FĂŒr jede Pack-Datei wird eine Indexdatei (.idx) erstellt, die es ermöglicht, anhand der Objekt-ID sehr schnell die Offset-Position in der Pack-Datei zu bestimmen, an der sich dieses Objekt befindet. Der in Git 2.31 eingefĂŒhrte umgekehrte Index (.rev) zielt darauf ab, den Prozess der Identifizierung der Objekt-ID anhand der Informationen ĂŒber die Platzierung des Objekts in der Pack-Datei zu optimieren.

    FrĂŒher wurde eine solche Umwandlung zur Laufzeit beim Parsen der Pack-Datei durchgefĂŒhrt und nur im Speicher gehalten, was eine Wiederverwendung solcher Indizes verhinderte und die Erstellung des Indizes jedes Mal erforderte. Der Vorgang zur Erstellung des Indexes besteht darin, ein Array aus Objekt-Position-Paaren zu erstellen und es nach Position zu sortieren, was bei großen Pack-Dateien 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 ĂŒber die Beziehung zwischen Position und Objekt nicht indiziert wurden. Nach der Verwendung des umgekehrten Indexes benötigten diese VorgĂ€nge ungefĂ€hr die gleiche Zeit. Umgekehrte Indizes ermöglichen auch eine schnellere DurchfĂŒhrung der Übertragungsoperationen von Objekten bei der AusfĂŒhrung der Befehle fetch und push durch die direkte Übertragung bereits vorbereiteter Daten von der Festplatte. StandardmĂ€ĂŸig werden umgekehrte Indizes nicht erstellt; um sie zu generieren, muss die Einstellung „git config pack.writeReverseIndex true“ aktiviert werden, gefolgt von der Verpackung des Repositories mit dem Befehl „git repack -Ad“.

  • Leistungsoptimierungen wurden hinzugefĂŒgt, die auf dem commit-graph-Dateiformat basieren, das zur Optimierung des Zugriffs auf Commit-Informationen verwendet wird. Neue Daten zur Commit-Generierung ermöglichen es, zusĂ€tzliche Operationen mit Commits zu beschleunigen.
  • Die Möglichkeit, den Namen des Standard-Hauptzweigs, der in neuen Repositories verwendet wird (Einstellung init.defaultBranch), zu ĂŒberschreiben, wurde ergĂ€nzt. Wenn auf externe Repositories zugegriffen wird, versucht Git, den Branch abzurufen, auf den HEAD zeigt. Das bedeutet, wenn ein externes der Server Repository standardmĂ€ĂŸig den Branch „main“ verwendet, wird die Operation „git clone“ versuchen, „main“ lokal abzurufen. In Git 2.31 wird die UnterstĂŒtzung fĂŒr ein Ă€hnliches Abrufen nun auch fĂŒr leere Repositories realisiert. Beispielsweise wird beim lokalen Klonen eines neuen Repositories, bevor die ersten Patches hinzugefĂŒgt werden, die lokale Kopie nun den Server Standard-Hauptbranchnamen enthalten.
  • Dem Befehl „git rev-list“ wurde die Option „—disk-usage“ hinzugefĂŒgt, um eine Zusammenfassung der ObjektgrĂ¶ĂŸen anzuzeigen.
  • In Erwartung des bevorstehenden Backend-Austauschs zur DurchfĂŒhrung von ZusammenfĂŒhrungen wurde die Erkennung von Umbenennungen erheblich optimiert.
  • Die UnterstĂŒtzung der veralteten PCRE1-Bibliothek fĂŒr regulĂ€re AusdrĂŒcke wurde eingestellt.
  • Die Möglichkeit, die Verwendung von verkĂŒrzten Links zu erzwingen, wurde bereitgestellt, unabhĂ€ngig vom Hash-Algorithmus. Das Verbot wird aktiviert, indem der Parameter core.abbrev der Wert "no" zugewiesen wird.
  • Der Befehl „git rev-parse“ hat die Option „—path-format=(absolute|relative)“ erhalten, um die Ausgabe von relativen oder absoluten Pfaden explizit zu definieren.
  • In den Skripten fĂŒr die automatische VervollstĂ€ndigung in Bash wurde die HinzufĂŒgung von VervollstĂ€ndigungsregeln fĂŒr eigene „git“-Unterbefehle vereinfacht.
  • Der Befehl „git bundle“ hat die Option „—stdin“ erhalten, um Links aus dem Standard-Eingabestrom zu lesen.
  • Der Befehl „git log“ hat eine neue Option „—diff-merges=“ erhalten.
  • Der Befehl „git ls-files“ hat die Option „—deduplicatecan“ erhalten, um Duplikate bei der Ausgabe zu entfernen.
  • Neue Muster zum Ausschließen von Commit-Bereichen wurden hinzugefĂŒgt — „^!“ und „^-“.
  • Der Befehl „git range-diff“ hat die Optionen „—left-only“ und „—right-only“ erhalten, um nur eine Seite des verglichenen Bereichs anzuzeigen.
  • Die Befehle „git diff“ und „git log“ wurden um die Optionen „—skip-to=“ und „—rotate-to=“ erweitert, um die Anfangspfade zu ĂŒberspringen oder ans Ende zu verschieben.
  • Der Befehl „git difftool“ hat die Option „—skip-to=“ erhalten, um eine unterbrochene Sitzung von einem beliebigen Pfad aus fortzusetzen.
  • Der Verhaltenskodex (Code of Conduct), der die grundlegenden Prinzipien zur Lösung von Konfliktsituationen zwischen Entwicklern festlegt, wurde auf Version 2.0 aktualisiert (zuvor wurde Version 1.4 verwendet).

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