Nach zwei Monaten Entwicklung wurde die Version 2.45 des verteilten Systems zur Verwaltung von Quelltexten Git veröffentlicht. Git ist eines der beliebtesten, zuverlĂ€ssigsten und leistungsstĂ€rksten Versionsverwaltungssysteme, das flexible Möglichkeiten fĂŒr nichtlineare Entwicklungen bietet, die auf Verzweigungen und ZusammenfĂŒhrungen von Branches basieren. Um die IntegritĂ€t der Historie und die Resistenz gegen nachtrĂ€gliche Ănderungen zu gewĂ€hrleisten, wird eine implizite Hash-Berechnung der gesamten vorherigen Historie in jedem Commit verwendet; auĂerdem können digitale Signaturen einzelner Tags und Commits von Entwicklern verifiziert werden. Der Git-Code wird unter der Lizenz GPLv2+ verbreitet.
Im Vergleich zur vorherigen Version wurden in die neue Version 540 Ănderungen ĂŒbernommen, an denen 96 Entwickler mitgewirkt haben, von denen 35 erstmals an der Entwicklung beteiligt waren. Die wichtigsten Neuerungen:
- Es wurde eine vorlĂ€ufige UnterstĂŒtzung fĂŒr das Backend âreftableâ hinzugefĂŒgt, um die effiziente Speicherung von Verweisen auf Branches und Tags im Repository zu ermöglichen. Das neue Backend verwendet eine Blockspeicherung, die im Projekt JGit Anwendung findet, und ist optimiert fĂŒr die Speicherung einer sehr groĂen Anzahl von Verweisen (traditionelle Formate zur Speicherung von Verweisen fĂŒhren in Repositories mit vielen Verweisen aufgrund der Ablage einer sehr groĂen Anzahl von Dateien in einem Verzeichnis zu spĂŒrbaren Overhead-Kosten, wenn Verweise im Verzeichnis $GIT_DIR/refs gespeichert werden, oder es ist notwendig, bei jedem Update eine groĂe Datei neu zu schreiben, wenn Verweise in der Datei $GIT_DIR/packed_refs gespeichert werden). Das neue Backend wird aktiviert, indem die Option ââref-format=reftableâ bei der Initialisierung des Repositories angegeben wird (âgit init âref-format=reftable /path/to/repoâ), was die Suche, das Lesen und Schreiben in Repositories mit vielen Verweisen beschleunigt.
- Es wurden Mittel bereitgestellt, um die PortabilitĂ€t zwischen Objekt-IDs auf Basis der Hashes SHA-1 und SHA-256 sicherzustellen. Um den Betrieb mit SHA-1- und SHA-256-Hashes in einem Repository im Rahmen einer schrittweisen Migration zu SHA-256-Hashes zu ermöglichen, wurde ein neues Objektformat âcompatibilityâ vorgeschlagen, das es ermöglicht, auf Objekte nicht nur ĂŒber den Haupt-Hash, der bei der Initialisierung des Repositories festgelegt wurde, sondern auch ĂŒber einen Backup-Hash zuzugreifen. So kann bei der Initialisierung des Repositories das Format SHA-256 gewĂ€hlt und als Backup der Hash SHA-1 definiert werden: git init âobject-format=sha256 /path/to/repo cd /path/to/repo git config extensions.compatObjectFormat sha1
- Der Befehl âgit rev-listâ hat die Möglichkeit hinzugefĂŒgt, Objekt-IDs anzuzeigen, die im lokalen Repository fehlen, selbst wenn sie in einem Branch oder Tag unerreichbar sind. Dies kann zur Diagnose von Repository-SchĂ€den verwendet werden: git rev-list âmissing=print âall | grep â^?â ?70678e7afeacdcba1242793c3d3d28916a2fd152
- Ein neuer Befehl âgit reflog listâ wurde hinzugefĂŒgt, um bekannte Reflogs und die entsprechenden Links zu Tags und Branches anzuzeigen.
- Die Möglichkeit wurde bereitgestellt, alternative PrĂ€fixe 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 PrĂ€fixe âa/â und âb/â verwendet). Neue Parameter diff.srcPrefix und diff.dstPrefix wurden zur Konfiguration hinzugefĂŒgt, um eigene PrĂ€fixe festzulegen.
- Ein Parameter core.commentString wurde hinzugefĂŒgt, um eine Trennzeile zu definieren, die anstelle des Zeichens â#â zur Ignorierung 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 Befehl âgit configâ hat die Option ââcommentâ erhalten, die es ermöglicht, Kommentare in der Datei .gitconfig zu speichern, um die Bedeutung bestimmter Einstellungen zu erlĂ€utern. git config âcomment âum die Merge-Basis anzuzeigenâ merge.conflictStyle diff3 tail -n 2 .git/config [merge] conflictStyle = diff3 # um die Merge-Basis anzuzeigen
- Der Befehl âgit cherry-pickâ hat die Option ââemptyâ erhalten, um redundante Commits automatisch zu entfernen, Ă€hnlich der Option ââemptyâ in git-rebase und git-am.
- Im Befehl âgit checkout -pâ ist die Verwendung des Symbols â@â als Synonym fĂŒr den Namen âHEADâ erlaubt.
Quelle: opennet.ru
