Izdaja za nadzor vira Git 2.39

Po dveh mesecih razvoja je bil izdan porazdeljeni sistem za nadzor vira Git 2.39. Git je eden najbolj priljubljenih, zanesljivih in visoko zmogljivih sistemov za nadzor različic, ki zagotavlja prilagodljiva nelinearna razvojna orodja, ki temeljijo na razvejanju in združevanju. Za zagotovitev celovitosti zgodovine in odpornosti proti retroaktivnim spremembam se v vsaki objavi uporablja implicitno zgoščevanje celotne prejšnje zgodovine, možno je tudi certificiranje posameznih oznak in potrditev z digitalnimi podpisi razvijalcev.

V primerjavi s prejšnjo izdajo je nova različica vsebovala 483 sprememb, pripravljenih s sodelovanjem 86 razvijalcev, od tega jih je 31 pri razvoju sodelovalo prvič. Glavne novosti:

  • Ukaz »git shortlog«, namenjen prikazovanju povzetkov s statističnimi podatki iz zgodovine sprememb, je dodal možnost »-group« za poljubno združevanje potrditev po poljih, ki niso omejena na avtorja ali pošiljatelja. Če želite na primer prikazati seznam razvijalcev s podatki o številu sprememb, ob upoštevanju pomočnikov, omenjenih v polju »Soavtor«, lahko uporabite ukaz: git shortlog -ns --group=author - -skupina=napovednik:soavtorstvo

    Izhod Shortlog je mogoče združiti z uporabo specifikatorjev oblikovanja, možnost »--group« pa lahko znatno poenostavi ustvarjanje kompleksnih poročil in odpravi potrebo po dodatnih ukazih za razvrščanje. Na primer, če želite ustvariti poročilo z informacijami o tem, koliko potrditev za določeno izdajo je bilo sprejetih v vsakem mesecu, lahko podate: 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 Prej je bilo za izvedbo podobne operacije treba uporabiti pripomočke za razvrščanje in uniq: git log v2.38.0 .. —date='format:%Y -%m' —format='%cd' | razvrsti | edinstven -c

  • Razširjene so bile zmožnosti mehanizma "cruft packs", zasnovanega za pakiranje nedosegljivih predmetov, ki niso navedeni v repozitoriju (nanje se ne sklicujejo veje ali oznake). Nedosegljive objekte izbriše zbiralnik smeti, vendar ostanejo v skladišču določen čas, preden se izbrišejo, da se izognejo tekmovalnim pogojem. Mehanizem "cruft packs" omogoča shranjevanje vseh nedosegljivih objektov v eno datoteko paketa in prikaz podatkov o času spreminjanja vsakega predmeta v ločeni tabeli, shranjeni v ločeni datoteki s pripono ".mtimes", tako da ne prekrivajo s skupnim časom spreminjanja.

    Čas, v katerem ostanejo nedosegljivi objekti v skladišču, preden so dejansko izbrisani, je določen z možnostjo “--prune=”. Čeprav je odlaganje pred brisanjem dokaj učinkovit in praktičen način za preprečevanje poškodb repozitorija zaradi tekmovalnih pogojev, ni 100-odstotno zanesljiv. Za lažjo obnovitev poškodovanega repozitorija nova izdaja ponuja možnost shranjevanja manjkajočih predmetov z dodajanjem možnosti »--expire-to« v ukaz »git repack«, ki vam omogoča, da določite datoteko za ustvarjanje zunanje kopijo vseh izbrisanih predmetov. Na primer, če želite v datoteko backup.git shraniti nedosegljive predmete, ki se niso spremenili v zadnjih 5 minutah, lahko uporabite ukaz: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Občutno povečana (do 70 %) hitrost operacije "git grep -cached" pri iskanju v območjih, ki uporabljajo delno kloniranje (sparse-checkout) in za katera obstajajo delni indeksi (sparse index). Prej je bilo pri določanju možnosti »-cached« iskanje izvedeno najprej v običajnem indeksu, nato pa v delnih, kar je povzročilo opazne zamude pri iskanju v velikih repozitorijih.
  • Strežniško preverjanje skladnosti novih objektov, preden so postavljeni v repozitorij med operacijo "git push", je bilo pospešeno. S prehodom na obračunavanje samo deklariranih povezav pri preverjanju v testnem repozitoriju s 7 milijoni povezav, od katerih jih le 3 % pokriva operacija potiskanja, so izvedene optimizacije omogočile zmanjšanje časa preverjanja za 4.5-krat.
  • Za zaščito pred morebitnimi prekoračitvami celih števil v kodi ukaz "git apply" omeji največjo velikost popravkov, ki jih je mogoče obdelati. Če velikost popravka presega 1 GB, bo zdaj prikazana napaka.
  • Za zaščito pred morebitnimi ranljivostmi so bile narejene spremembe za čiščenje nepotrebnih informacij iz nastavljenih glav pri uporabi modula h2h3 z možnostjo GIT_TRACE_CURL=1 ali GIT_CURL_VERBOSE=1 skupaj s HTTP/2.
  • Pri izvajanju preverjanja veje, ki je simbolična povezava do druge veje, ukaz "git symbolic-ref HEAD" zdaj prikaže ime ciljne veje namesto imena simbolne povezave.
  • Dodana podpora za argument @{-1} k možnosti »--edit-description« (»git branch —edit-description @{-1}«) za urejanje opisa prejšnje veje.
  • Dodan ukaz "git merge-tree --stdin" za posredovanje seznama možnosti prek standardnega vnosa.
  • V omrežnih datotečnih sistemih je upravljalnik fsmonitor, ki spremlja spremembe v datotečnem sistemu, privzeto onemogočen.

Vir: opennet.ru

Dodaj komentar