Die neue Version des verteilten Versionskontrollsystems Git 2.38 wurde veröffentlicht. Git gehört zu den beliebtesten, zuverlĂ€ssigsten und leistungsstĂ€rksten Versionskontrollsystemen und bietet flexible Mittel fĂŒr nichtlineare Entwicklung basierend auf Branching und Merging. Zur GewĂ€hrleistung der IntegritĂ€t der Historie und der WiderstandsfĂ€higkeit gegenĂŒber nachtrĂ€glichen Ănderungen wird in jedem Commit eine implizite Hashbildung der gesamten vorherigen Historie verwendet. Zudem ermöglicht die digitale Signatur von Entwicklern fĂŒr bestimmte Tags und Commits eine Authentifizierung.
Im Vergleich zur vorherigen Version wurden 699 Ănderungen in die neue Version aufgenommen, die von 92 Entwicklern vorbereitet wurden, von denen 24 zum ersten Mal an der Entwicklung teilnahmen. Zu den wichtigsten Neuerungen zĂ€hlen:
- Im Hauptbestandteil ist das Tool âscalarâ enthalten, das von Microsoft zur Verwaltung groĂer Repositories entwickelt wurde. Das Tool wurde ursprĂŒnglich in C# geschrieben, aber eine umgearbeitete Version in C wurde in Git integriert. Die neue Anwendung unterscheidet sich von den Git-Befehlen, indem sie standardmĂ€Ăig zusĂ€tzliche Funktionen und Einstellungen bietet, die die Leistung beim Arbeiten mit sehr groĂen Repositories verbessern. Zum Beispiel wird bei der Verwendung von scalar Folgendes angewendet:
- Teilweises Klonen fĂŒr die Arbeit mit einer unvollstĂ€ndigen Kopie des Repositories.
- Ein integrierter Mechanismus zur Ăberwachung von Ănderungen im Dateisystem (FSMonitor), der es ermöglicht, auf eine vollstĂ€ndige Durchsuchung des Arbeitsverzeichnisses zu verzichten.
- Indizes, die Objekte in verschiedenen Pack-Dateien abdecken (Multi-Pack).
- Commit-Graph-Dateien mit einem Index des Commit-Graphs, der zur Optimierung des Zugriffs auf Informationen ĂŒber Commits verwendet wird.
- Hintergrundarbeiten zur Aufrechterhaltung der optimalen Struktur des Repositories im Hintergrund, ohne die interaktive Sitzung zu blockieren (jede Stunde wird eine Aufgabe zur proaktiven загŃŃĐ·ĐșĐ” neuer Objekte aus dem entfernten Repository sowie zur Aktualisierung der Commit-Grafdatei ausgefĂŒhrt, wĂ€hrend jede Nacht ein Verpackungsprozess fĂŒr das Repository startet).
- Der Modus âsparseCheckoutConeâ, der die zulĂ€ssigen Muster beim partiellen Klonen einschrĂ€nkt.
- Der Befehl âgit rebaseâ wurde um die Option ââupdate-refsâ ergĂ€nzt, um abhĂ€ngige Branches, die sich mit den verschobenen Branches ĂŒberschneiden, zu aktualisieren, damit keine manuelle Checkout-Operation fĂŒr jeden abhĂ€ngigen Branch erforderlich ist, um auf den gewĂŒnschten Commit zu wechseln.
- Die KompatibilitĂ€t des Befehls âgit rmâ mit teilweisen Indizes wurde gewĂ€hrleistet.
- Das Verhalten des Befehls âgit mv A Bâ wurde verbessert, wenn eine Datei aus dem Arbeitsverzeichnis mit teilweisen Indizes im âconeâ-Modus in einen externen Bereich verschoben wird, fĂŒr den dieser Modus nicht gilt.
- Das Format der Bitmap-Dateien fĂŒr die Arbeit mit groĂen Repositories wurde optimiert â eine optionale Indextabelle mit einer Liste der ausgewĂ€hlten Commits und deren Offsets wurde hinzugefĂŒgt.
- Im Befehl âgit merge-treeâ wurde ein neuer Modus implementiert, bei dem auf Basis von zwei angegebenen Commits ein Baum mit dem Ergebnis des ZusammenfĂŒhrens berechnet wird, als wĂ€ren die Historien dieser Commits zusammengefĂŒhrt worden.
- Es wurde die Einstellung âsafe.barerepositoryâ hinzugefĂŒgt, um die Möglichkeit der Ablage von Bare-Repositories (Repositories, die keinen Arbeitsbaum enthalten) innerhalb anderer Git-Repositories zu steuern. Bei der Einstellung auf âexplicitâ ist die Arbeit mit Bare-Repositories, die nur im obersten Verzeichnis abgelegt sind, erlaubt. Um Bare-Repositories auch in Unterverzeichnissen ablegen zu können, sollte der Wert âallâ verwendet werden.
- Im Befehl âgit grepâ wurde die Option â-mâ (ââmax-countâ) hinzugefĂŒgt, die der gleichnamigen Option in GNU grep entspricht und es ermöglicht, die Anzahl der ausgegebenen Ăbereinstimmungen zu begrenzen.
- Im Befehl âls-filesâ wurde die Option ââformatâ implementiert, um die ausgegebenen Felder anzupassen (zum Beispiel kann der Ausgabename des Objekts, Berechtigungen usw. einbezogen werden).
- In âgit cat-fileâ wurde bei der Anzeige des Inhalts von Objekten die Möglichkeit implementiert, die Zuordnungen der Autoren zu E-Mail-Adressen zu berĂŒcksichtigen, die in der Datei mailmap festgelegt sind.
Quelle: opennet.ru
