Veröffentlichung des Versionskontrollsystems Git 2.45.

Nach zwei Monaten Entwicklung wurde die Version 2.45 des verteilten Quellcodeverwaltungssystems Git veröffentlicht. Git gehört zu den beliebtesten, zuverlässigsten und leistungsstarken Versionsverwaltungssystemen und bietet flexible Werkzeuge für nicht-lineare Entwicklungen, die auf Branching und Merging basieren. Um die Integrität der Historie und die Widerstandsfähigkeit gegen nachträgliche Änderungen zu gewährleisten, wird eine implizite Hash-Wertung der gesamten vorherigen Historie in jedem Commit verwendet; zudem ist eine digitale Signatur von Entwicklern für bestimmte Tags und Commits möglich. Der Git-Code wird unter der GPLv2+-Lizenz veröffentlicht.

Im Vergleich zur vorherigen Version wurden in die neue Version 540 Änderungen aufgenommen, die mit Beteiligung von 96 Entwicklern, von denen 35 erstmals an der Entwicklung teilnahmen, vorbereitet wurden. Zu den wichtigsten Neuerungen gehören:

  • Es wurde eine vorläufige Unterstützung für das 'reftable'-Backend hinzugefügt, um Verlinkungen zu Branches und Tags effizient im Repository zu speichern. Das neue Backend verwendet ein Blockspeichersystem, das im Projekt JGit gebräuchlich ist und für die Speicherung einer sehr großen Anzahl von Links optimiert wurde (traditionelle Linkspeicherformate führen in Repositories mit vielen Links aufgrund der Ablage einer sehr großen Anzahl von Dateien in einem Verzeichnis zu erheblichen Overheadkosten, wenn Links im Verzeichnis $GIT_DIR/refs gespeichert werden, oder erfordern das Überschreiben einer großen Datei bei jedem Update, wenn sie in der Datei $GIT_DIR/packed_refs gespeichert werden). Das neue Backend wird durch Angabe der Option '—ref-format=reftable' bei der Initialisierung des Repositories aktiviert ('git init —ref-format=reftable /path/to/repo') und ermöglicht eine schnellere Suche, Lesung und Schreibvorgänge in Repositories mit vielen Links.
  • Es wurden Mittel zur Gewährleistung der Portabilität zwischen den Objekt-IDs auf Basis von SHA-1 und SHA-256 bereitgestellt. Um die Arbeit mit SHA-1- und SHA-256-Hashes in einem Repository während der schrittweisen Migration auf SHA-256-Hashes zu unterstützen, wurde ein neues 'Kompatibilitäts'-Objektformat vorgeschlagen, das es ermöglicht, auf Objekte nicht nur über den primären Hash zuzugreifen, der bei der Initialisierung des Repositories festgelegt wurde, sondern auch über einen Backup-Hash. Beispielsweise kann bei der Initialisierung des Repositories das Format SHA-256 gewählt und als Backup ein SHA-1-Hash definiert werden: git init —object-format=sha256 /path/to/repo cd /path/to/repo git config extensions.compatObjectFormat sha1
  • Die 'git rev-list'-Befehlszeile wurde um die Möglichkeit erweitert, die Objekt-IDs anzuzeigen, die im lokalen Repository fehlen, auch wenn sie in einem Branch oder Tag nicht erreichbar sind, was zur Diagnose von Repository-Schäden verwendet werden kann: git rev-list —missing=print —all | grep '^?' ?70678e7afeacdcba1242793c3d3d28916a2fd152
  • Ein neuer Befehl 'git reflog list' wurde hinzugefügt, um bekannte Reflogs und die zugehörigen Links zu Tags und Branches anzuzeigen.
  • Es wurde die Möglichkeit geschaffen, alternative Prefixe für die Ausgabe von 'git diff' festzulegen, die vor dem Dateipfad angezeigt werden und den Zustand vor und nach einer bestimmten Version der Datei kennzeichnen (standardmäßig werden die Prefixe 'a/' und 'b/' verwendet). Um eigene Prefixe festzulegen, wurden die neuen Parameter diff.srcPrefix und diff.dstPrefix zur Konfiguration hinzugefügt.
  • Der Parameter core.commentString wurde hinzugefügt, um eine Trennzeile festzulegen, die anstelle des Zeichens '#' zum Ignorieren von Kommentaren in der Commit-Nachricht verwendet wird. Die zuvor verfügbare Einstellung core.commentChar wurde angepasst, um mehrbyte-Zeichen als Kommentartrennzeichen zu unterstützen (zuvor wurden nur ASCII-Zeichen unterstützt).
  • Der Option '—comment' wurde im Befehl 'git config' hinzugefügt, die es ermöglicht, Kommentare in der .gitconfig-Datei zu speichern, um den Inhalt bestimmter Einstellungen zu erläutern. git config —comment 'to show the merge base' merge.conflictStyle diff3 tail -n 2 .git/config [merge] conflictStyle = diff3 # to show the merge base
  • Der Option '—empty' wurde im Befehl 'git cherry-pick' hinzugefügt, um redundante Commits automatisch zu entfernen, ähnlich wie die Option '—empty' in git-rebase und git-am.
  • Im Befehl 'git checkout -p' wurde das Symbol '@' als Synonym für den Namen 'HEAD' zugelassen.

Quelle: opennet.ru

Erwerben 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