Kahden kuukauden intensiivisen työn jälkeen kehittäjäyhteisö Git esittelee Git-version 2.51, päivitys, joka Se kokoaa yhteen 506 muutosta, joihin osallistui 91 kehittäjää, joista 21 osallistui ensimmäistä kertaa.
Tämä julkaisu esittelee parannuksia, joiden tarkoituksena on parantaa suorituskykyä ja yksinkertaistaa repositorion hallintaa, mukaan lukien git-pushin ja git-fetchin suorituskyvyn optimoinnit sekä useita muutoksia uuteen 3.x-haaraan siirtyen.
Git 2.51 Tärkeimmät uudet ominaisuudet
Yksi Git 2.51:n kohokohdista on Git push- ja git fetch -komentojen optimointi arkistoissa, joissa on paljon viitteitä. Tämän parannuksen avain on eräpäivityksessä, joka käsittelee useita linkkejä yhdessä tapahtumassa yksittäin tapahtuvan sijaan.
Tämän optimoinnin ansiosta Reftable-taustajärjestelmä suoriutuu nyt perinteistä tiedostotaustajärjestelmää paremmin.Testeissä, joissa käytettiin jopa 10 000 viitettä sisältäviä repositorioita, gitin nouto-suorituskyky parani 22-kertaisesti reftablen ja 1.25-kertaisesti tiedostojen osalta, kun taas gitin push-suorituskyky parani vastaavasti 18- ja 1.21-kertaisesti.
Toinen tärkeä innovaatio on iNiin sanottujen cruft-pakettien käyttöönotto, suunniteltu säilyttämään saavuttamattomia esineitä, jotka eivät ole linkitetty oksiin tai tunnisteisiin. Nämä aiemmin hajallaan olleet esineet voidaan nyt hallita erillisessä pakkauksessas, mikä helpottaa niiden hallintaa ja pienentää monipaketti-indeksien (MIDX) kokoa.
Kanssa uusi repack.MIDXMustContainCruft-asetus, Git välttää näiden objektien sisällyttämistä pääindekseihinGitHubissa tehdyissä testeissä tämä kokoonpano pienensi indeksin kokoa 38 %, nopeutti kirjoituksia 35 % ja paransi lukuja 5 %.
Uusi lähestymistapa esineiden pakkaamiseen
El git pack-objects -komennossa on –path-walk-optio, joka esittelee innovatiivisen menetelmän pakkaustiedostojen uudelleenjärjestelyyn. Sen sijaan, että Git käsittelisi objekteja niiden hajautusarvojen perusteella, se voi nyt iteroida niiden läpi tiedostopolun perusteella ja pakkaa samassa sijainnissa olevat tiedostot yhteen. Tämä lähestymistapa poistaa tarpeen lajitella objekteja etukäteen ja johtaa pienempiin ja tehokkaampiin tiedostojen pakkaamiseen.
Myös tällä versiolla Git Stashilla luotujen työpuiden tilojen ja indeksien vaihtamiseen tarkoitettu uusi formaatti on standardoitu.Nyt on mahdollista viedä ja tuoda varastoja aivan kuten haaroja tai tageja, mikä helpottaa tilojen siirtämistä järjestelmästä toiseen.
Esimerkiksi:
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
Parannuksia klassisiin komentoihin
Useat Git-komentoihin on tehty olennaisia päivityksiä:
- git cat-file raportoi nyt puuttuvat objektit ja alimoduulit näyttämällä tunnisteet pelkän "puuttuvan"-merkinnän sijaan.
- git-loki hyötyy Bloomin suodatusoptimoinneista, jotka nopeuttavat hakuja useilla tiedostopoluilla.
- Vuodesta 2019 kokeellisina pidetyt git switch- ja git restore -komennot on vihdoin vakiinnutettu moderneiksi vaihtoehdoiksi git checkoutille.
- Komentoa git log –raw vastaava git whatchanged -komento on vanhentunut ja poistetaan Git 3.0:ssa.
- git for-each-ref saa –start-after-valitsin, joka yhdessä –count-valitsimen kanssa mahdollistaa tulosteen sivuttamisen.
- git merge ja git pull sisältävät nyt –compact-summary-valitsin, joka tarjoaa tiiviimmän yhteenvetomuodon.
C99-tuki ja uudet maksusäännöt
Git jatkaa koodinsa mukauttamista C9-standardin ominaisuuksiin9. Vaikka yhteensopiva kääntäjä on ollut pakollinen vuodesta 2021 lähtien, kehittäjät pyrkivät varovaisesti säilyttämään yhteensopivuuden kääntäjien kanssa, jotka toteuttavat sen vain osittain.
Lisäksi maksukäytäntöön on tehty merkittävä muutos: Patcheja voi nyt lähettää salanimellä, päätös, joka on linjassa Linux-ytimen sääntöjen kanssa ja jonka tarkoituksena on tarjota enemmän joustavuutta osallistujille.
Katse kohti Git 3.0:aa
El Kehitystiimi on myös päivittänyt tiekartan Git 3.0:aan., jossa kaksi keskeistä muutosta erottuu: SHA-256:n oletuskäyttö objektitunnisteena ja reftable-muodon käyttöönotto haara- ja tagiviitteiden tallentamiseen. Näiden parannusten tarkoituksena on parantaa tietoturvaa ja tehokkuutta yhä suuremmissa ja monimutkaisemmissa tietovarastoissa.
lähde: https://lore.kernel.org