Nach drei Monaten Entwicklungszeit wurde die Version 2.43 des verteilten Systems zur Verwaltung von Quelltexten Git veröffentlicht. Git gehört zu den beliebtesten, zuverlĂ€ssigsten und leistungsstĂ€rksten Versionsverwaltungssystemen und bietet flexible, nichtlineare Entwicklungsmöglichkeiten, die auf Branching und Merging basieren. Um die IntegritĂ€t der Historie und die Resistenz gegen rĂŒckwirkende Ănderungen sicherzustellen, wird eine implizite Hash-Berechnung der gesamten vorherigen Historie in jedem Commit verwendet; zudem ist die BestĂ€tigung durch digitale Signaturen von Entwicklern fĂŒr einzelne Tags und Commits möglich.
Im Vergleich zur vorherigen Version wurden 464 Ănderungen in die neue Version ĂŒbernommen, die mit der Beteiligung von 80 Entwicklern umgesetzt wurden, von denen 17 zum ersten Mal an der Entwicklung mitgewirkt haben. Die wichtigsten Neuerungen sind:
- Die Befehle âgit repackâ wurden um die Optionen ââfilterâ und ââfilter-toâ erweitert, um das Repacken eines Repositories unter BerĂŒcksichtigung eines bestimmten Objektfilters zu ermöglichen und, falls erforderlich, Objekte, die diesem Filter nicht entsprechen, an einen anderen Ort zu verschieben. Diese Optionen können verwendet werden, um das Repository nach bestimmten Kriterien zu trennen (zum Beispiel um unerwĂŒnschte oder zu groĂe Objekte auszulagern), wobei der Zugriff auf alle Teile durch partielles Klonen weiterhin möglich bleibt. Um beispielsweise Blobs mit einer GröĂe von weniger als 1 MB im Repository zu belassen und die restlichen groĂen Objekte in ein separates Repository auszulagern, kann Folgendes ausgefĂŒhrt werden: $ git init âbare ../backup.git $ git repack -ad âfilter='blob:limit=1m' \ âfilter-to=../backup.git/objects/pack/pack
Die Initialisierung eines Repositories durch partielles Klonen ermöglicht die Arbeit mit einer unvollstÀndigen Kopie des Repositories und verarbeitet Anfragen an fehlende Objekte korrekt (bei Anfragen an fehlende Objekte werden diese bei Bedarf sofort geladen).
- Die Möglichkeit, mit mehreren Pack-Dateien zu arbeiten, die Informationen ĂŒber nicht erreichbare Objekte (âcruft packsâ) enthalten, auf die im Repository keine Verweise (keine Verlinkungen von Branches oder Tags) existieren, wurde hinzugefĂŒgt. Mit der neuen Option âgit repack âmax-cruft-sizeâ kann die maximale GröĂe einer einzelnen Pack-Datei festgelegt werden, um die Basis der nicht erreichbaren Objekte in eine Reihe kleiner Pack-Dateien zu unterteilen. Die Verwendung mehrerer kleiner Pack-Dateien statt einer groĂen reduziert die Ein- und Ausgabeoperationen erheblich beim Repacken von Repositories mit einer groĂen Anzahl von nicht erreichbaren Objekten, da nicht alle Daten fĂŒr jede Repacking-Operation neu geschrieben werden mĂŒssen.
- Die Erkennung von Doppel-Revert-Versuchen ĂŒber âgit revertâ wurde hinzugefĂŒgt, und dieser Umstand wird bei der Erstellung der RĂŒckgĂ€ngig-Meldung berĂŒcksichtigt (bei einer wiederholten âgit revertâ-Operation wird statt âRevert: Revert: fix bugâ âReapply fix bugâ aufgezeichnet, und wenn die Ănderung ein drittes Mal zurĂŒckgesetzt wird, wird âRevert Reapply fix bugâ aufgezeichnet). $ git revert âno-edit HEAD > /dev/null $ git revert âno-edit HEAD > /dev/null $ git log âoneline a300922 (HEAD -> main) Reapply âfix bugâ 0050730 Revert âfix bugâ b290810 fix bug
- Die gleichzeitige Verwendung der Optionen âârfcâ und ââsubject-prefixâ ist erlaubt. Zum Beispiel kann fĂŒr die Erstellung einer E-Mail mit dem PrĂ€fix â[RFC PATCH bpf-next]â in der Betreffzeile angegeben werden: $ git format-patch âsubject-prefix=âPATCH bpf-nextâ ârfc
- Im Befehl âgit logâ ist es erlaubt, den Platzhalter â%(decorate)â anzugeben, um die Namen der verbundenen Branches im Format anzuzeigen, das mit der Option ââformatâ definiert wird, zum Beispiel: $ git log âformat=â%cr%(decorate) (%h) %sâ 3 Tage her (HEAD -> master, origin/master, origin/HEAD) (e0939bec27) RelNotes: kleinere FormulierungsĂ€nderungen in den Release-Notizen 2.43.0 7 Tage her (tag: v2.43.0-rc1) (dadef801b3) Git 2.43-rc1 7 Tage her (8ed4eb7538) Merge Branch âtb/rev-list-unpacked-fixâ
- In âgit for-each-refâ und Ă€hnlichen Befehlen wurde die Möglichkeit hinzugefĂŒgt, Regeln aus der .mailmap auf die ĂŒber die Option ââformatâ angegebenen Format-Spezifizierungen, wie â%(authorname)â und â%(committeremail)â, anzuwenden.
Quelle: opennet.ru
