PĂ€rast kahte kuud arendust on vĂ€lja antud jaotatud lĂ€htekoodihaldussĂŒsteemi Git versioon 2.51. Git paistab silma kĂ”rge jĂ”udluse poolest ning pakub mitte-lineaarse arendamise vahendeid, mis pĂ”hinevad harude loomisel ja liitmisel. Ajaloo terviklikkuse ja tagasiulatuvate muudatuste vĂ€ltimise tagamiseks kasutatakse igas kommis varasema ajaloo implitsiitset rĂ€si, samuti arendajate individuaalsete siltide ja kommitite digitaalse allkirjastamise kontrollimist. Git'i kood levitatakse GPLv2+ litsentsi alusel.
Uue versiooniga on vÔrreldes eelmise vÀljaandega vastu vÔetud 506 muudatust, mille eest on vastutavad 91 arendajat (21 neist osales Git'i arenduses esmakordselt). Peamised uuendused (1, 2, 3):
- Suurenenenud on "git push" ja "git fetch" kĂ€skude jĂ”udlus repodes, kus on palju viiteid. Kiirus on tagatud viidete grupiviisilise vĂ€rskendamise kaudu, kus ĂŒhes tehingus töödeldakse mitu viidet korraga, selle asemel, et luua iga viite vĂ€rskendamiseks eraldi tehing. Optimeerimine on oluliselt suurendanud "reftable" taustaprotsessi jĂ”udlust, mis toidab selle nĂŒĂŒd ĂŒle "files" taustaprotsessi. NĂ€iteks testrepos, kus on 10 000 viidet, kasvas "git fetch" jĂ”udlus "reftable" taustaprotsessi kasutamisel 22 korda, samas kui "files" taustaprotsessi puhul tĂ”usis see 1,25 korda. "git push" puhul oli tĂ”us vastavalt 18 ja 1,21 korda.
- Pakettide pakkumise uus meetod, mis sisaldab pakifailide osade salvestamist, mis ei ole seotud kÀtte saamata objektide jÀlgimisega, millele ei viita sidurid (nt harud vÔi sildid). Teave kÀtte saamata objektide kohta salvestatakse eraldi pakifailidesse ("cruft packs"), mis on toonud kaasa vajaduse neid mitupakettindeksi MIDX (multi-pack index) kaudu kajastada, et katta objekte, mis algselt olid kÀtte saamata ja mis olid salvestatud ainult cruft-pakettides, kuid said seejÀrel kÀtte pÀrast sellele viitavat kinnitust.
Uues versioonis tagatakse pack-failide ĂŒmberpakimisel lisakoopiate sĂ€ilitamine, mis sisaldavad ainult saavutatud objekte, mis asuvad ainult cruft-failides. Selline muudatus garanteerib, et pack-failide kogum, mis on mĂ”eldud saavutatud objektide salvestamiseks, ei sisalda objekte, mis viitavad teistele objektidele, mis asuvad vĂ€ljaspool seda kogumit. Cruft-failide mittesaadavate sisu eemaldamiseks mitme paketi indeksitest (MIDX) on pakutud seadistust ârepack.MIDXMustContainCruftâ, mis vĂ”imaldab dramaatiliselt vĂ€hendada sarnaste indeksite suurust. Seadistuse lubamine GitHubi hoidlas aitas vĂ€hendada MIDX-indeksite suurust 38%, kiirendada kirjutamist MIDX-indeksitele 35% ja suurendada lugemisvĂ”imet 5%.
- KĂ€sku «git pack-objects» on lisatud valik «âpath-walk», mis tutvustab uut meetodit objektiinfot koguda pakifailide uuesti pakkimise ajal. Selle asemel, et objekte kĂ€idelda revisjonide jĂ€rjekorras, kĂ€ideldakse «âpath-walk» reĆŸiimis objekte failiteede ĂŒlekĂ€imise kaudu, vĂ”imaldades korraga pakkida kĂ”ik objektid sama failiteega. Selline lĂ€henemine lubab kĂ”rvaldada heuristika, mis kasutab rikka ĂŒhenduse mÀÀramiseks objekti ja selle failitee vahel, ning loobub objektide sorteerimisest enne pakkimist. «âpath-walk» reĆŸiimis on genereeritud pakifailide suurus oluliselt vĂ€iksem kui objektide rĂŒhmitamisel hashide abil.
- On mÀÀratud formaat salvestatud töökeskkonna ja indeksite vahetamiseks hoidlas, mis genereeritakse kĂ€su âgit stashâ abil. Uus formaat vĂ”imaldab salvestatud muudatusi (stash-kirjeid) kodeerida kommiteerimise jĂ€rjestusena. Impordi ja ekspordi jaoks on ette nĂ€htud alamhÀÀlestused âgit stash importâ ja âgit stash exportâ, mida saab kasutada salvestatud olekute ĂŒlekandmiseks ĂŒhelt sĂŒsteemilt teisele ning nende olekute kĂ€sitlemiseks nagu tavaliste harude vĂ”i siltide puhul. git stash export âto-ref refs/stashes/my-stash git push origin refs/stashes/my-stash ⊠git fetch origin â+refs/stashes/*:refs/stashes/*â git stash import refs/stashes/my-stash
- KĂ€sk âgit cat-fileâ, mis kuvab mÀÀratud objektide sisu, on saanud uuenduse, mis vĂ”imaldab kasutada valikute ââbatchâ ja ââbatch-checkâ abil teabe kuvamist puuduvate objektide kohta (nĂ€iteks tĂ€nu hoidla kahjustusele) ning alammodulite kohta. Varem, kui anti tee alammodulini, nĂ€itas kĂ€sk âgit cat-file âbatch-checkâ âpuuduvâ, kuid nĂŒĂŒd kuvab objekti identifikaatori.
- KĂ€sk «git log» kasutab optimeerimisi Bloom'i filtrite pĂ”hjal, et kiirendada muutuste ajaloos otsimist, kui mÀÀratakse mitmeid failiteid, nĂ€iteks «git log â path/to/a path/to/b».
- KĂ€sk «git switch» ja «git restore» on stabiliseeritud ning neid on alates 2019. aastast kĂ€sitletud eksperimentaalsete kĂ€skudena. Need kĂ€sud esitatakse kui kaasaegsed ekvivalendid «git checkout», eraldades selle kĂ€su sellised ebamugavad funktsioonid nagu harude haldamine (lĂŒlitamine ja loomine) ning failide taastamine töökataloogis.
- KĂ€sk «git whatchanged», mis on ekvivalentne «git log âraw», on kuulutatud vananenuks ja plaanitakse eemaldada Git 3.0 harus.
- KĂ€sku «git for-each-ref» on lisatud valik «âstart-after», mida saab kasutada koos valikuga «âcount» lehekĂŒljelise vĂ€ljundi korraldamiseks.
- KĂ€skudele «git merge» ja «git pull» on lisatud valik «âcompact-summary», et kasutada kompaktset formaati muudatuste ĂŒlevaate kujundamiseks instead of diffstat formaati.
- Git'i koodibaasis on lubatud kasutada
boolmĂ€rksĂ”na, mis ilmus C99 standardisse. Samuti on dokumenteeritud mĂ”ned C99 vĂ”imalused, mida Git katsetas (nĂ€iteks plaanitakse 2026. aastal lubada konstruktsioonide(struct foo){ .member = value };kasutamine). C99 tuge toetav kompilaator on Git'i jaoks alates 2021. aastast kohustuslik, kuid C99 spesifikatsiooni vĂ”imalusi rakendatakse ÀÀrmise ettevaatlikkusega, et sĂ€ilitada ĂŒhilduvus kompilaatoritega, mis toetavad seda standardit osaliselt. - PatĆĄide vastuvĂ”tureegleid on muudetud, lubades saata patĆĄe ka pseudonĂŒĂŒmi all, mitte ainult tĂ”elise arendaja nime all. Muudatus vastab Linuxi tuuma patĆĄide vastuvĂ”tureeglitele.
- Uuendatud on loetelu ĂŒhilduvust rikkuvatest muudatustest, mis rakendatakse Git 3.0 harus. Oluliste muudatuste hulgas, mis on samuti tulemas Git 3.0 vĂ€ljalaskes, on vaikimisi ĂŒleminek objektide identifikaatoritele, mis pĂ”hinevad SHA-256 rehkendusel, uute hoidlate initsialiseerimisel, ning 'reftable' formaadi kasutuselevĂ”tt harude ja siltide viidete hoidmiseks (rakendatud on JGiti projekti plokkhĂ€ire, mis on optimeeritud vĂ€ga suure hulga viidete talletamiseks).
Allikas: opennet.ru
