Git versiooni 2.51 vÀljaanne

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 bool mĂ€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

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster