Release fan Git 2.39 boarne kontrôle systeem

Nei twa moannen fan ûntwikkeling is it ferspraat boarnekontrôlesysteem Git 2.39 frijlitten. Git is ien fan 'e populêrste, betroubere en heechprestearjende ferzjekontrôlesystemen, en leveret fleksibele net-lineêre ûntwikkelingsark basearre op fertakking en gearfoeging. Om de yntegriteit fan 'e skiednis en ferset tsjin retroaktive feroarings te garandearjen, wurdt ymplisyt hashing fan' e heule foarige skiednis brûkt yn elke commit; it is ek mooglik om yndividuele tags te sertifisearje en commits mei digitale hantekeningen fan 'e ûntwikkelders.

Yn ferliking mei de foarige release omfette de nije ferzje 483 wizigingen, taret mei de dielname fan 86 ûntwikkelders, wêrfan 31 foar it earst meidien oan ûntwikkeling. Wichtichste ynnovaasjes:

  • It kommando "git shortlog", ûntworpen om gearfettings te werjaan mei statistiken út 'e skiednis fan feroaringen, hat in opsje "-group" tafoege foar willekeurige groepearring fan commits troch fjilden net beheind ta auteur of committer. Bygelyks, om in list fan ûntwikkelders te sjen mei ynformaasje oer it oantal wizigingen, rekken hâldend mei de helpers neamd yn it "Co-authored-by" fjild, kinne jo it kommando brûke: git shortlog -ns --group=author - -group=trailer:co-authored-by

    Shortlog-útfier kin wurde aggregearre mei opmaakspesifikaasjes, en de opsje "--group" kin it oanmeitsjen fan komplekse rapporten signifikant ferienfâldigje en de needsaak foar ekstra sortearkommando's eliminearje. Om bygelyks in rapport te meitsjen mei ynformaasje oer hoefolle commits foar in opjûne frijlitting yn elke moanne akseptearre binne, kinne jo opjaan: 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 Eartiids, om in ferlykbere operaasje út te fieren, soe it nedich west hawwe om de sorte- en unike nutsfoarsjenningen te brûken: git log v2.38.0. .. —date='format:%Y -%m' —format='%cd' | sortearje | unyk -c

  • De mooglikheden fan it meganisme "cruft packs", ûntworpen foar it ynpakken fan ûnberikbere objekten dy't net wurde ferwiisd yn 'e repository (net ferwiisd troch tûken of tags), binne útwreide. Unberikbere objekten wurde wiske troch de garbage collector, mar bliuwe yn 'e repository foar in bepaalde tiid foardat se wiske wurde om racebetingsten te foarkommen. It meganisme fan "cruft packs" lit jo alle ûnberikbere objekten yn ien pakbestân bewarje, en gegevens oer de wizigingstiid fan elk objekt yn in aparte tabel werjaan, opslein yn in aparte triem mei de ".mtimes" tafoeging, sadat se dogge net oerlaapje mei de totale wizigingstiid.

    De lingte fan tiid dat ûnberikbere objekten yn 'e repository bliuwe foardat se werklik wurde wiske wurdt bepaald troch de opsje "—prune=" " Lykwols, wylst fertraging foar it wiskjen in frij effektive en praktyske manier is om korrupsje fan repository te foarkommen troch racebetingsten, is it net 100% betrouber. Om it makliker te meitsjen om in beskeadige repository te herstellen, biedt de nije release de mooglikheid om ûntbrekkende objekten te bewarjen troch de opsje "--expire-to" ta te foegjen oan it kommando "git repack", wêrmei jo in bestân kinne opjaan om in eksterne te meitsjen kopy fan alle wiske objekten. Bygelyks, om ûnberikbere objekten te bewarjen dy't yn 'e lêste 5 minuten net feroare binne yn' e backup.git-bestân, kinne jo it kommando brûke: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • De snelheid fan 'e "git grep -cached"-operaasje signifikant ferhege (oant 70%) by it sykjen yn gebieten dy't partiel klonen brûke (sparse-checkout) en wêrfoar't dielindeksen binne (sparse yndeks). Eartiids, doe't de opsje "-cached" oantsjutte, waard it sykjen earst útfierd yn 'e reguliere yndeks, en dan yn' e partiel, wat late ta merkbere fertragingen by it sykjen yn grutte repositories.
  • De ferifikaasje fan 'e tsjinner fan' e gearhing fan nije objekten foardat se yn 'e repository pleatst wurde tidens de operaasje "git push" is fersneld. Troch te wikseljen nei it rekkenjen fan allinich ferklearre keppelings by it kontrolearjen, yn in testrepository mei 7 miljoen keppelings, wêrfan allinich 3% wurde dekt troch de push-operaasje, makken de optimisaasjes tastien om de kontrôletiid mei 4.5 kear te ferminderjen.
  • Om te beskermjen tsjin potinsjele oerstreamingen fan heule getal yn 'e koade, beheint it kommando "git apply" de maksimale grutte fan patches dy't kinne wurde ferwurke. As de patchgrutte grutter is as 1 GB, sil no in flater werjûn wurde.
  • Om te beskermjen tsjin potinsjele kwetsberens, binne wizigingen makke om ûnnedige ynformaasje op te romjen fan 'e kopteksten ynsteld by it brûken fan de h2h3-module mei de opsje GIT_TRACE_CURL=1 of GIT_CURL_VERBOSE=1 tegearre mei HTTP/2.
  • By it útfieren fan in kontrôle op in tûke dy't in symboalyske keppeling is nei in oare tûke, toant it kommando "git symbolic-ref HEAD" no de namme fan 'e doeltûke ynstee fan de namme fan 'e symlink.
  • Stipe tafoege foar it argumint @{-1} oan de opsje "--edit-description" ("git branch —edit-description @{-1}") foar it bewurkjen fan de beskriuwing fan in eardere branch.
  • Tafoege "git merge-tree --stdin" kommando om in list mei opsjes troch te jaan fia standert ynfier.
  • Op netwurkbestânsystemen is de fsmonitor-handler, dy't wizigingen yn it bestânsysteem kontrolearret, standert útskeakele.

Boarne: opennet.ru

Add a comment