Pärast kahekuulist intensiivset tööd on arenduskogukond Git tutvustab Giti versiooni 2.51, värskendus, mis See koondab 506 muudatust, milles osales 91 arendajat, millest 21 panustasid esimest korda.
See väljalase tutvustab täiustusi, mis on loodud jõudluse parandamiseks ja repositooriumi haldamise lihtsustamiseks, sealhulgas git-pushi ja git-fetchi jõudluse optimeerimist, samuti mitmeid muudatusi uue 3.x haru suunas liikumiseks.
Git 2.51 Peamised uued funktsioonid
Üks Git 2.51 esiletõstetud omadusi on Git push ja git fetch käskude optimeerimine suure hulga viidetega repositooriumides. Selle täiustuse võti peitub partiivärskenduses, mis töötleb mitut linki ühe tehinguga, mitte eraldi.
Tänu sellele optimeerimisele Refable'i taustsüsteem ületab nüüd traditsioonilise failide taustsüsteemi jõudlust.Testides, kus repositooriumid sisaldasid kuni 10 000 viidet, suurenes giti toomise jõudlus reftable'i puhul 22 korda ja failide puhul 1.25 korda, samas kui giti pushi jõudlus paranes vastavalt 18 korda ja 1.21 korda.
Teine oluline uuendus on iNn kruiisipakettide kasutuselevõtt, mõeldud ligipääsmatute objektide hoidmiseks, mis pole okste või siltidega seotud. Need objektid, mis olid varem laiali pillutatud, saab nüüd hallata eraldi pakendiss, mis muudab nende haldamise lihtsamaks ja vähendab mitmepaketiliste indeksite (MIDX) suurust.
Mis uus repack.MIDXMustContainCruft säte, Git väldib nende objektide lisamist põhiindeksitesseGitHubi testides vähendas see konfiguratsioon indeksi suurust 38%, kiirendas kirjutamist 35% ja parandas lugemist 5%.
Uus lähenemine esemete pakendamise protsessile
El git pack-objects käsk sisaldab valikut –path-walk, mis tutvustab uuenduslikku meetodit pakendifailide ümberkorraldamiseks. Objektide räsiväärtuste (hashi) alusel töötlemise asemel saab Git neid nüüd failitee (failina) läbi käia, pakkides samas asukohas olevad objektid kokku. See lähenemisviis välistab objektide eelsorteerimise vajaduse ja annab tulemuseks väiksemad ja tõhusamad failide pakkimise.
Ka selle versiooniga Git Stashiga loodud tööpuu olekute ja indeksite vahetamise uus vorming on standardiseeritud.Nüüd on võimalik eksportida ja importida varusid täpselt nagu harusid või silte, mis lihtsustab olekute teisaldamist ühest süsteemist teise.
Näiteks:
git stash export --to-ref refs/stashes/mi-stash git push origin refs/stashes/mi-stash git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash
Klassikaliste käskude täiustused
Mitu Giti käske on uuendatud vastavalt:
- git cat-file annab nüüd teada puuduvatest objektidest ja alammoodulitest, kuvades identifikaatoreid, mitte lihtsalt märget „puuduv“.
- git log saab kasu Bloomi filtri optimeerimistest, mis kiirendavad otsinguid mitme failitee abil.
- Käsklused git switch ja git restore, mida peeti alates 2019. aastast eksperimentaalseks, on lõpuks stabiliseeritud ja pakuvad moodsaid alternatiive git checkoutile.
- Käsk „git whatchanged”, mis on samaväärne käsuga „git log –raw”, on aegunud ja eemaldatakse Git 3.0-s.
- git for-each-ref saab valiku –start-after, mis koos valikuga –count võimaldab väljundi lehekülgedeks jaotamist.
- git merge ja git pull sisaldavad nüüd valikut –compact-summary, mis pakub täpsemat kokkuvõtte vormingut.
C99 tugi ja uued sissemaksete reeglid
Git jätkab oma koodi kohandamist C9 standardi omadustega9. Kuigi ühilduv kompilaator on nõutav alates 2021. aastast, liiguvad arendajad ettevaatlikult, et säilitada ühilduvus kompilaatoritega, mis seda ainult osaliselt rakendavad.
Lisaks on sisse viidud oluline muudatus sissemaksete poliitikasse: Plaastreid saab nüüd esitada pseudonüümi all, otsus, mis on kooskõlas Linuxi kerneli reeglitega ja mille eesmärk on pakkuda kaastöölistele suuremat paindlikkust.
Git 3.0 tulevikku vaadates
El Arendusmeeskond on uuendanud ka Git 3.0 tegevuskava., kus silma paistavad kaks peamist muudatust: SHA-256 vaikimisi kasutamine objektiidentifikaatorina ja refable-vormingu kasutuselevõtt harude ja siltide viidete salvestamiseks. Nende täiustuste eesmärk on parandada turvalisust ja tõhusust üha suuremates ja keerukamates repositooriumides.
allikas: https://lore.kernel.org