Git 2.39 Quell Kontroll Verëffentlechung

No zwee Méint vun der Entwécklung ass de verdeelt Quellkontrollsystem Git 2.39 verëffentlecht ginn. Git ass ee vun de populäersten, zouverlässegsten an héich performante Versiounskontrollsystemer, déi flexibel net-linear Entwécklungsinstrumenter baséieren op Verzweigung a Fusioun. Fir d'Integritéit vun der Geschicht an d'Resistenz géint retroaktiv Ännerungen ze garantéieren, gëtt implizit Hashing vun der ganzer viregter Geschicht an all Engagement benotzt; et ass och méiglech individuell Tags ze zertifiéieren an engagéiert mat digitalen Ënnerschrëften vun den Entwéckler.

Am Verglach mat der viregter Verëffentlechung enthält déi nei Versioun 483 Ännerungen, virbereet mat der Participatioun vun 86 Entwéckler, vun deenen 31 fir d'éischt Kéier un der Entwécklung deelgeholl hunn. Haaptinnovatiounen:

  • De Kommando "git shortlog", entwéckelt fir Zesummefaassungen mat Statistiken aus der Geschicht vun den Ännerungen ze weisen, huet eng "-group" Optioun bäigefüügt fir arbiträr Gruppéierung vu Verpflichtungen duerch Felder, déi net limitéiert sinn op den Auteur oder d'Engagement. Zum Beispill, fir eng Lëscht vun Entwéckler mat Informatioun iwwer d'Zuel vun den Ännerungen ze weisen, andeems Dir d'Helfer berücksichtegt am Feld "Co-authored-by" genannt, kënnt Dir de Kommando benotzen: git shortlog -ns --group=author - -group=trailer:co-authored-by

    Shortlog Output kann aggregéiert ginn mat Formatéierungsspezifizéierer, an d'"--group" Optioun kann d'Schafung vu komplexe Berichter wesentlech vereinfachen an d'Noutwendegkeet fir zousätzlech Sortéierungsbefehl eliminéieren. Zum Beispill, fir e Bericht ze kreéieren mat Informatioun iwwer wéivill Engagementer fir eng bestëmmte Verëffentlechung an all Mount ugeholl goufen, kënnt Dir spezifizéieren: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Virdrun, fir eng ähnlech Operatioun auszeféieren, wier et néideg gewiescht d'Sort an Uniq Utilities ze benotzen: git log v2.38.0. .. —date='format:%Y -%m' —format='%cd' | sortéieren | eenzegaarteg -c

  • D'Kapazitéite vum "Cruft Packs" Mechanismus, entworf fir onerreechbar Objeten ze packen déi net am Repository referenzéiert sinn (net vu Branchen oder Tags referenzéiert), goufen erweidert. Onerreechbar Objete ginn vum Gerempels geläscht, awer bleiwen am Repository fir eng gewëssen Zäit ier se geläscht ginn, fir Rennbedéngungen ze vermeiden. De Mechanismus "Cruft Packs" erlaabt Iech all onerreechbar Objeten an enger Packdatei ze späicheren, an Daten iwwer d'Ännerungszäit vun all Objet an enger separater Tabell ze weisen, an enger separater Datei mat der Extensioun ".mtimes" gespäichert, sou datt se et maachen. net mat der totaler Ännerungszäit iwwerlappt.

    D'Längt vun der Zäit, déi onerreechbar Objeten am Repository bleiwen ier se tatsächlech geläscht ginn, gëtt vun der "—prune=" Optioun bestëmmt " Wéi och ëmmer, wärend d'Verzögerung virum Läschen e zimlech effektiven a praktesche Wee ass fir Korruptioun vum Repository wéinst Rennbedéngungen ze vermeiden, ass et net 100% zouverlässeg. Fir et méi einfach ze maachen e beschiedegte Repository ze restauréieren, bitt déi nei Verëffentlechung d'Fäegkeet fir vermësst Objekter ze späicheren andeems Dir d'Optioun "--expire-to" op de Kommando "git repack" bäidréit, wat Iech erlaabt eng Datei ze spezifizéieren fir en externen ze kreéieren. Kopie vun all geläscht Objete. Zum Beispill, fir onerreechbar Objeten ze späicheren déi net an de leschte 5 Minutten an der backup.git Datei geännert hunn, kënnt Dir de Kommando benotzen: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Bedeitend erhéicht (bis zu 70%) d'Geschwindegkeet vun der "git grep -cached" Operatioun wann Dir a Beräicher sicht, déi deelweis Klonen benotzen (sparse-checkout) a fir déi et deelweis Indexe ginn (sparse Index). Virdrun, wann Dir d'Optioun "-cached" spezifizéiert, gouf d'Sich fir d'éischt am normale Index duerchgefouert, an dann an de partiellen, wat zu merkbare Verspéidungen gefouert huet wann Dir a grousse Repositories sicht.
  • D'Verifizéierung vum Server vun der Kohärenz vun neien Objeten ier se an de Repository während der "Git Push" Operatioun gesat ginn ass beschleunegt. Andeems Dir op d'Rechnung vun nëmmen deklaréierte Linken beim Iwwerpréiwung wiesselt, an engem Testrepository mat 7 Millioune Linken, vun deenen nëmmen 3% vun der Push-Operatioun ofgedeckt sinn, hunn d'Optimisatiounen erlaabt d'Kontrollzäit ëm 4.5 Mol ze reduzéieren.
  • Fir géint potenziell ganz Zuelen Iwwerfloss am Code ze schützen, limitéiert de Kommando "git application" déi maximal Gréisst vu Patches déi veraarbecht kënne ginn. Wann d'Patchgréisst méi wéi 1 GB ass, gëtt elo e Feeler ugewisen.
  • Fir géint potenziell Schwachstelle ze schützen, goufen Ännerunge gemaach fir onnéideg Informatioun aus den Header ze botzen wann Dir den h2h3 Modul mat der GIT_TRACE_CURL=1 oder GIT_CURL_VERBOSE=1 Optioun zesumme mat HTTP/2 benotzt.
  • Wann Dir e Check-out op enger Branche ausféiert, déi e symbolesche Link op eng aner Branche ass, weist de Kommando "git symbolic-ref HEAD" elo den Numm vun der Zilbranche anstatt den Numm vum Symlink.
  • Ënnerstëtzung fir d'@{-1} Argument fir d'Optioun "--edit-description" bäigefüügt ("git branch —edit-description @{-1}") fir d'Beschreiwung vun enger fréierer Branche z'änneren.
  • Derbäigesat "git merge-tree --stdin" Kommando fir eng Lëscht vun Optiounen iwwer Standard Input ze passéieren.
  • Op Netzwierkdateiesystemer ass de fsmonitor Handler, deen Ännerungen am Dateiesystem iwwerwaacht, par défaut deaktivéiert.

Source: opennet.ru

Setzt e Commentaire