Nach drei Monaten Entwicklung wurde die Version 2.32 des verteilten Quelltextverwaltungssystems Git veröffentlicht. Git zĂ€hlt zu den beliebtesten, zuverlĂ€ssigsten und leistungsfĂ€higsten Versionskontrollsystemen, die flexible Möglichkeiten fĂŒr nichtlineare Entwicklungen bieten, basierend auf Verzweigungen und ZusammenfĂŒhrungen. Um die IntegritĂ€t der Historie zu gewĂ€hrleisten und Ănderungen "im Nachhinein" zu verhindern, erfolgt eine implizite HashprĂŒfung der gesamten vorherigen Historie in jedem Commit. AuĂerdem ist es möglich, digitale Signaturen von Entwicklern fĂŒr bestimmte Tags und Commits zu verwenden.
Im Vergleich zur vorherigen Version wurden in die neue Version 617 Ănderungen aufgenommen, an denen 100 Entwickler beteiligt waren, von denen 35 zum ersten Mal an der Entwicklung teilnahmen. Die wichtigsten Neuerungen sind:
- Der Befehl âgit commitâ wurde um die Option ââtrailer [=]â erweitert, die es erleichtert, eigene strukturierte Informationen (Trailer) im SchlĂŒssel/Wert-Format an den Commit anzufĂŒgen, die anschlieĂend mit dem Befehl âinterpret-trailersâ verarbeitet werden können.
- Anstelle des Mechanismus GIT_CONFIG_NOSYSTEM, der verhindert, dass auf die systemweite Konfigurationsdatei zugegriffen wird, wird der GIT_CONFIG_SYSTEM-Mechanismus vorgeschlagen. Dieser ermöglicht es, explizit anzugeben, aus welcher Datei die systemweiten Einstellungen geladen werden sollen. AuĂerdem gibt es den Parameter GIT_CONFIG_GLOBAL, um die benutzerspezifischen Einstellungen in $HOME/.gitconfig zu ĂŒberschreiben. Das Setzen der Variable GIT_CONFIG_SYSTEM auf einen leeren Wert Ă€ndert das Verhalten, sodass es dem GIT_CONFIG_NOSYSTEM entspricht.
- Bei Verwendung der zweiten Version des Git-Kommunikationsprotokolls wurde beim AusfĂŒhren von âgit pushâ die Bestimmung des gemeinsamen Vorfahren auf der Empfangsseite implementiert. Dies hat die Effizienz von âgit pushâ auf das Niveau von âgit fetchâ angehoben und das Herunterladen von Objekten, die nicht benötigt werden, ausgeschlossen.
- Es wurde eine einfache IPC-Schnittstelle hinzugefĂŒgt, die das Erstellen von Diensten wie fsmonitor ermöglicht.
- Die Verarbeitung von Dateien wie â.gitattributesâ, â.gitignoreâ und â.mailmapâ wird eingestellt, wenn sie symbolische Links sind.
- FĂŒr den HTTP-Transport wurde die UnterstĂŒtzung von Passwörtern hinzugefĂŒgt, die erfolgreich zur Entsperrung des Zertifikats verwendet wurden.
- Im Befehl âgit stash showâ wurde die Möglichkeit implementiert, den nicht verfolgten Teil des Speichers temporĂ€r ausgeblendeter Dateien anzuzeigen.
- Das Team von âgit repackâ hat eine fortschrittlichere Strategie zur Neuverpackung des Repositories vorgeschlagen, um den Ressourcenverbrauch wĂ€hrend der Neuverpackung zu reduzieren.
- Im Befehl âgit commitâ wurde eine erweiterte Version der Option ââfixupâ (Erstellung eines Commits fĂŒr ârebase âautosquashâ) implementiert: ââfixup=(reword|amend):â, die die Wahl bietet, nur die Nachrichten im Protokoll oder sowohl die Nachricht als auch den Inhalt zu Ă€ndern.
- Im Befehl âgit send-emailâ wurde die Einstellung der Konfiguration core.hooksPath berĂŒcksichtigt.
- In âgit format-patch -vâ wurde die Verwendung von ZĂ€hlern, die keine ganze Zahl sind, erlaubt.
- Im Befehl âgit cloneâ wurde die Option ââreject-shallowâ hinzugefĂŒgt, die das Klonen aus Repositories im Shallow-Modus (ohne vollstĂ€ndige Ănderungsverlauf) verbietet.
- In der Anwendung âgitwebâ wurde ein Modus zum Verstecken von E-Mail-Adressen hinzugefĂŒgt, der Ă€hnliche Strings wie E-Mail-Adressen beim Ausgeben ersetzt.
- Die Logik der Verarbeitung des Befehls âgit apply â3wayâ wurde geĂ€ndert, sodass nun zuerst der Algorithmus fĂŒr das dreiseitige Merge angewendet wird und nur im Falle eines Fehlers oder eines Konflikts auf die normale Anwendung des Patches zurĂŒckgegriffen wird (frĂŒher war es umgekehrt).
- In der Befehl âgit applyâ ist es nun erlaubt, die Optionen ââ3wayâ und ââcachedâ gleichzeitig anzugeben.
- Userdiff unterstĂŒtzt jetzt Vorlagen fĂŒr die Programmiersprache âSchemeâ.
- Der Befehl âgit logâ hat die Option ââdiff-merges=â sowie die Einstellung log.diffMerges fĂŒr die Auswahl des Standardmodus erhalten.
- Den Befehlen âgit addâ und âgit rmâ wurde ein zusĂ€tzlicher Schutz gegen DatenĂ€nderungen in Pfaden hinzugefĂŒgt, die auĂerhalb des Bereichs des partiellen Klonens (sparse checkout) liegen.
- Im Befehl âgit rev-listâ wurde die Option ââfilter=object:type=â hinzugefĂŒgt, um bestimmte Objekttypen aus der von der pack-objects-Befehls generierten Pack-Datei auszuschlieĂen.
- In âgit pack-objectsâ ist die Angabe negativer Werte in Optionen, die numerische Werte annehmen, wie ââwindowâ und ââdepthâ, nicht mehr erlaubt.
Quelle: opennet.ru
