Git 2.39 allikajuhtimise väljalase

Pärast kahekuulist arendustööd on välja antud hajutatud allika juhtimissüsteem Git 2.39. Git on üks populaarsemaid, usaldusväärsemaid ja suure jõudlusega versioonikontrollisüsteeme, mis pakub paindlikke mittelineaarseid arendustööriistu, mis põhinevad harude hargnemisel ja ühendamisel. Ajaloo terviklikkuse ja tagasiulatuvatele muudatustele vastupidavuse tagamiseks kasutatakse igas sissekandes kogu eelneva ajaloo kaudset räsimist, samuti on võimalik kontrollida üksikuid silte ja kohustusi arendajate digiallkirjadega.

Võrreldes eelmise versiooniga võeti uude, 483 arendaja osalusel koostatud versioonisse vastu 86 muudatust, millest 31 osales arenduses esmakordselt. Peamised uuendused:

  • Käsule "git shortlog" lisati suvand --group, mis on ette nähtud muudatuste ajaloo statistikaga kokkuvõtete kuvamiseks, sisseviimiste suvaliseks rühmitamiseks väljade järgi, mis ei ole piiratud autori või volitajaga. Näiteks arendajate loendi kuvamiseks koos teabega muudatuste arvu kohta, võttes arvesse väljal "Kaasautor" mainitud abistajaid, võite kasutada käsku: git shortlog -ns --group=author - -grupp=haagis:kaasautor

    Shortlogi väljundit saab vorminguspetsifikaatorite abil koondada ning valik "--group" võimaldab oluliselt lihtsustada keeruliste aruannete loomist ja vabaneda täiendavatest sorteerimiskäskudest. Näiteks selleks, et luua aruanne, mis näitab, kui palju konkreetse väljalaske puhul igal kuul tehtud kohustusi tehti, võite kasutada: 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 Varem oleks sarnase toimingu tegemiseks vaja olnud sortimist ja unikaalsust: git log v2.38.0.. --date ='vorming:%Y -%m' --format='%cd' | sorteerida | unikaalne -c

  • "Cruft packs" mehhanismi võimalusi, mis on loodud pakkima ligipääsmatuid objekte, millele hoidlas ei viidata (harudele või siltidele ei viidata), on laiendatud. Kättesaamatud esemed eemaldab prügivedaja, kuid need jäävad enne äraviimist teatud ajaks hoidlasse, et vältida võistlusolusid. "Cruft packs" mehhanism võimaldab salvestada kõik kättesaamatud objektid ühte pakifaili ja kajastada andmeid iga objekti muutmisaja kohta eraldi tabelis, mis on salvestatud eraldi faili laiendiga ".mtimes", et need ei satuks. kattuvad kogu muutmise ajaga.

    Aeg, mille kättesaamatud objektid hoidlas veedavad enne tegelikku kustutamist, määratakse valikuga "--prune= ". Sellegipoolest on kustutamise viivitamine suhteliselt tõhus ja praktiline viis hoidla rassitingimuste tõttu riknemise vältimiseks, kuid see ei ole 100% usaldusväärne. Katkise hoidla taastamise hõlbustamiseks pakub uus versioon võimaluse salvestada puuduvad objektid, lisades käsule "git repack" suvandi "--expire-to", mis võimaldab määrata faili välise faili loomiseks. kõigi kustutatud objektide koopia. Näiteks selleks, et salvestada faili backup.git kättesaamatuid objekte, mis pole viimase 5 minuti jooksul muutunud, võite kasutada käsku: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Suurendas oluliselt (kuni 70%) operatsiooni "git grep --cached" kiirust otsides piirkondades, mis kasutavad osalist kloonimist (sparse-checkout) ja mille jaoks on olemas osalised indeksid (hõre indeks). Varem otsiti suvandi "--cached" määramisel esmalt tavalist indeksit ja seejärel osalist, mis tõi kaasa märgatavaid viivitusi suurte hoidlate otsimisel.
  • Uute objektide ühenduvuse kontrollimise kiirem käivitamine serveris enne nende hoidlasse paigutamist toimingu "git push" sooritamisel. Seoses üleminekuga ainult deklareeritud linkide kontrollimisel arvessevõtmisele, võimaldas 7 miljoni lingiga testhoidlas, millest tõukeoperatsioon on kaetud vaid 3%, kontrollimise aega vähendada 4.5 korda.
  • Koodi võimalike täisarvude ületäitumise eest kaitsmiseks piirab käsk "git apply" töödeldavate paikade maksimaalset suurust. Kui plaastri suurus ületab 1 GB, kuvatakse nüüd tõrketeade.
  • Võimalike haavatavuste eest kaitsmiseks on tehtud muudatusi, et puhastada mittevajalik teave päistest, mis on seatud mooduli h2h3 kasutamisel koos valikuga GIT_TRACE_CURL=1 või GIT_CURL_VERBOSE=1 koos HTTP/2-ga.
  • Kui sooritate väljaregistreerimise toimingu harule, mis on sümboolne link teisele harule, prindib käsk "git symbolic-ref HEAD" nüüd sihtharu nime, mitte sümboolse lingi nime.
  • Argumendi @{-1} tugi on lisatud valikule "--edit-description" ("git branch --edit-description @{-1}"), et muuta eelmise haru kirjeldust.
  • Lisatud käsk "git merge-tree --stdin", et edastada parameetrite loend standardsisendi kaudu.
  • Võrgu failisüsteemides on failisüsteemi muudatusi jälgiv fsmonitori töötleja vaikimisi keelatud.

Allikas: opennet.ru

Lisa kommentaar