Izdaja sistema za upravljanje izvorne kode Git 2.39.

Po dveh mesecih razvoja je bila objavljena različica distribuiranega sistema za upravljanje s strani Git 2.39. Git je eden najbolj priljubljenih, zanesljivih in visoko zmogljivih sistemov za upravljanje različic, ki ponuja fleksibilna sredstva za nelinearni razvoj, temelječa na razvejanju in združevanju vej. Za zagotavljanje celovitosti zgodovine in odpornosti na spremembe »za nazaj« se uporablja implicitno hashiranje celotne prejšnje zgodovine v vsakem commit-u, prav tako je mogoče potrditi z digitalnimi podpisi razvijalcev posamezne oznake in commit-e.

V primerjavi s prejšnjo različico je v novo različico sprejetih 483 sprememb, pripravljenih s sodelovanjem 86 razvijalcev, od katerih je 31 prvič sodelovalo v razvoju. Glavne novosti:

  • Ekipa »git shortlog«, namenjena prikazu povzetkov s statistiko iz zgodovine sprememb, je prejela novo možnost »—group« za poljubno skupinjenje commit-ov po poljih, ki niso omejena na avtorja ali commit-tion. Na primer, za prikaz seznama razvijalcev z informacijami o številu sprememb, ki upoštevajo pomožnike, omenjene v polju »Co-authored-by«, lahko uporabite ukaz: git shortlog -ns —group=author —group=trailer:co-authored-by

    Izpis shortlog lahko agregiramo s pomočjo formatnih specifikatorjev, možnost «—group» pa lahko znatno poenostavi ustvarjanje zapletenih poročil in odpravi potrebo po dodatnih ukazih za razvrščanje. Na primer, za ustvarjanje poročila z informacijami o tem, koliko commitov je bilo sprejetih za določeno izdajo v vsakem mesecu, lahko navedemo: git shortlog v2.38.0.. —date=’format:%Y-%m’ —group=’’ -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Prej bi za izvedbo podobne operacije potrebovali orodja sort in uniq: git log v2.38.0.. —date=’format:%Y-%m’ —format=’’ | sort | uniq -c

  • Razširjena je funkcionalnost mehanizma „cruft packs“, ki je namenjen pakiranju nedosegljivih objektov, na katere v repozitoriju ni povezav (na katere ne kažejo veje ali oznake). Nedosegljivi objekti se odstranijo z zbiralnikom smeti, vendar ostanejo v repozitoriju določen čas pred odstranitvijo, da se preprečijo stanja dirke. Mehanizem „cruft packs“ omogoča shranjevanje vseh nedosegljivih objektov v eni pack datoteki, informacije o času spremembe vsakega objekta pa so prikazane v ločeni tabeli, shranjeni v ločeni datoteki z razširitvijo „.mtimes“, da se ne prekrivajo z skupnim časom spremembe.

    Čas zadrževanja nedosegljivih objektov v repozitoriju pred dejanskim odstranjevanjem določa opcija „—prune=“. Kljub temu, da je zamuda pred odstranitvijo precej učinkovit in praktičen način preprečevanja poškodbe repozitorija zaradi stanja dirke, ni 100% zanesljiv. Da bi poenostavili obnovitev poškodovanega repozitorija, je v novi različici omogočeno shranjevanje manjkajočih objektov, zato je bila v ekipi „git repack“ dodana opcija „—expire-to“, ki omogoča določitev datoteke za ustvarjanje zunanje kopije vseh odstranjenih objektov. Na primer, za shranjevanje nedosegljivih objektov, ki se niso spremenili v zadnjih 5 minutah, v datoteki backup.git lahko uporabite naslednji ukaz: git repack —cruft —cruft-expiration=5.minutes.ago -d —expire-to=../backup.git

  • Razmeroma je povečana (do 70%) hitrost izvajanja operacije „git grep —cached“ pri iskanju na področjih, kjer se uporablja delno kloniranje (sparse-checkout) in za katere so na voljo delni indeksi (sparse index). Pred tem je bila ob izbiri opcije „—cached“ najprej opravljena iskanje v običajnem indeksu, nato pa v delnih, kar je povzročalo občutne zamude pri iskanju v velikih repozitorijih.
  • Pospešena je izvedba strežnikom preverjanja povezanosti novih objektov pred njihovim shranjevanjem v repozitorij med izvajanjem operacije „git push“. Z prehodom na upoštevanje le razglašenih povezav, so v testnem repozitoriju z 7 milijoni povezav, od katerih je le 3% zajetih v operaciji push, izvedene optimizacije omogočile zmanjšanje časa preverjanja za 4,5-krat.
  • Za zaščito pred morebitnimi prelivanji celih števil v kodi je ekipa „git apply“ omejila največjo velikost obdelanih popravkov. Če velikost popravka presega 1 GB, bo zdaj izpisana napaka.
  • Za zaščito pred potencialnimi ranljivostmi so bile opravljene spremembe za čiščenje nepotrebnih informacij iz glav, ki se pošiljajo pri uporabi modula h2h3 z možnostjo GIT_TRACE_CURL=1 ali GIT_CURL_VERBOSE=1 skupaj s HTTP/2.
  • Pri izvajanju operacije checkout z vejo, ki je simbolična povezava na drugo vejo, ukaz „git symbolic-ref HEAD“ zdaj izpisuje ime ciljne veje, ne imena simbolične povezave.
  • Dodana je podpora za argument @{-1} v možnostih „—edit-description“ („git branch —edit-description @{-1}“) za urejanje opisa prejšnje veje.
  • Dodana je ukaz „git merge-tree —stdin“, ki omogoča prenos seznama parametrov prek standardnega vhoda.
  • Na omrežnih datotečnih sistemih je privzeto onemogočen obdelovalnik fsmonitor, ki sledi spremembam v datotečnem sistemu.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster