Nach drei Monaten Entwicklung wurde die Version 2.43 des verteilten Systems zur Verwaltung von Quelltexten Git veröffentlicht. Git zĂ€hlt zu den beliebtesten, zuverlĂ€ssigsten und leistungsstĂ€rksten Versionierungssystemen, die flexible Mittel fĂŒr nichtlineare Entwicklungen bieten, basierend auf Verzweigung und ZusammenfĂŒhrung von Branches. Um die IntegritĂ€t der Historie und die WiderstandsfĂ€higkeit gegen "Backdating" zu gewĂ€hrleisten, wird das gesamte vorherige Archiv in jeder Commit implizit gehasht; auch die digitale Signatur von Entwicklern fĂŒr bestimmte Tags und Commits ist möglich.
Im Vergleich zur vorherigen Version wurden in die neue Version 464 Ănderungen aufgenommen, an denen 80 Entwickler beteiligt waren, von denen 17 zum ersten Mal an der Entwicklung teilnahmen. Die wichtigsten Neuerungen sind:
- Dem Befehl âgit repackâ wurden die Optionen ââfilterâ und ââfilter-toâ hinzugefĂŒgt, die eine Neuverpackung des Repositories unter BerĂŒcksichtigung eines bestimmten Objektfilters ermöglichen und gegebenenfalls Objekte, die den festgelegten Filter nicht erfĂŒllen, an einen separaten Ort verschieben. Diese Optionen können verwendet werden, um das Repository nach bestimmten Kriterien zu unterteilen (z.B. um unerwĂŒnschte oder zu groĂe Objekte herauszulösen) und die ZugĂ€nglichkeit aller Teile durch teilweises Klonen zu erhalten. Zum Beispiel um 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 teilweises Klonen ermöglicht die Arbeit mit einer unvollstÀndigen Kopie des Repositories und verarbeitet korrekt Zugriffe auf fehlende Objekte (fehlt ein Objekt, wird es bei Bedarf automatisch nachgeladen).
- Die Möglichkeit wurde hinzugefĂŒgt, mit mehreren Pack-Dateien fĂŒr unerreichbare Objekte (âcruft packsâ) zu arbeiten, auf die im Repository keine Verweise existieren (weder Branches noch Tags). Mit der neuen Option âgit repack âmax-cruft-sizeâ kann die maximale GröĂe einer einzelnen Pack-Datei definiert werden, wodurch die Daten unerreichbarer Objekte in eine Serie von kleinen Pack-Dateien aufgeteilt werden. Die Verwendung mehrerer kleiner Pack-Dateien anstelle einer groĂen reduziert erheblich die Ein-/Ausgabeoperationen beim Repacken von Repositories mit vielen unerreichbaren Objekten, da fĂŒr jede Repack-Operation nicht alle Daten ĂŒberschrieben werden mĂŒssen.
- Die Erkennung von Versuchen zum doppelte RĂŒckgĂ€ngig-Machen von Commits ĂŒber âgit revertâ wurde hinzugefĂŒgt, wobei dieser Umstand bei der Erstellung der RĂŒckgĂ€ngig-Meldung berĂŒcksichtigt wird (bei erneutem âgit revertâ wird anstelle von â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â wurde erlaubt. Um beispielsweise eine E-Mail mit dem PrĂ€fix â[RFC PATCH bpf-next]â im Betreff zu erstellen, kann Folgendes angegeben werden: $ git format-patch âsubject-prefix="PATCH bpf-next" ârfc
- In dem Befehl âgit logâ wurde die Verwendung von Platzhaltern â%(decorate)â zur Anzeige der Namen der zugehörigen Branches bei der Formatbestimmung ĂŒber die Option ââformatâ ermöglicht, zum Beispiel: $ git log âformat=â%cr%(decorate) (%h) %sâ 3 days ago (HEAD -> master, origin/master, origin/HEAD) (e0939bec27) RelNotes: minor wording fixes in 2.43.0 release notes 7 days ago (tag: v2.43.0-rc1) (dadef801b3) Git 2.43-rc1 7 days ago (8ed4eb7538) Merge branch âtb/rev-list-unpacked-fixâ
- In âgit for-each-refâ und Ă€hnlichen Befehlen wurde die Möglichkeit hinzugefĂŒgt, .mailmap-Regeln auf die ĂŒber die Option ââformatâ angegebenen Format-Spezifizierer wie â%(authorname)â und â%(committeremail)â anzuwenden.
Quelle: opennet.ru
