
Esitletud jaotatud lĂ€htekoodihalduse sĂŒsteemi vĂ€ljaanne Git 2.55. Peamised muudatused: Rusti toega ehituse vaikeseadistuse kaasamine, Linuxi jaoks fsmonitori protsessi rakendamine, uue inkrementaalse MIDX-indeksi packimise strateegia, git history fixup komand, kohandamine objektide juurdepÀÀsukaartide genereerimise optimeerimiseks, tugiteenuste paralleelsete tĂ€itmise korral, git format-rev komand. Git kood GNU Ăldine Avaliku litsentsi alusel. on litsentseeritud GPLv2+ all.
Uue versiooni on vastu vÔetud 505 muudatust, mille on ette valmistanud 100 arendajat, kellest 33 osaleb Git'i arenduses esmakordselt.
Peamised uuendused (github.blog, gitlab.com/blog, gitlab.com/git-scm):
- Vaikimisi lisatud Rust keele komponentide tugi. Kompilaatori rustc lisatud toodete kogumisse. Rusti kasutamata ehitamiseks vĂ”ib kasutada NO_RUST=1 lippu make utiliidi kĂ€ivitamisel vĂ”i -Drust=disabled meson configure kĂ€itamise ajal. Rusti ehitusvĂ”imekuse keelamine jÀÀb toetatuks kuni Git versioonini 3.0, kus Rust on seal kuulub kohustuslike sĂ”ltuvuste hulka. Rusti keeles on rakendatud liides, mis tagab ĂŒlekantavuse SHA-1 ja SHA-256 rikutud konfiguratsioonide vahel, samuti teatud sisemised funktsioonid, nagu muutuva pikkusega tĂ€isarvude kodeerimine ja dekodeerimine. Tulevikus on plaanis oluliste Git'i sisekomponentide ĂŒleviimine Rustisse.
- Eksperimentaalsesse meeskonda "git history", mis pakub ajaloo muutmise vĂ”imalusi, on lisatud kĂ€sk "git history fixup" commit'i parandamiseks. Fixup kĂ€sk vĂ”imaldab viia muudatused, mis on lisatud git add abil, varasemasse commit'i ja automaatselt kirjutada kĂ”ik sellele jĂ€rgnevate commit'ide ajaloo ĂŒmber, sarnaselt kĂ€su git commit âfixup= ja git rebase âautosquash ~ tĂ€itmisele.
- Linuxi platvormile on rakendatud taustaprotsess fsmonitor, mis jĂ€lgib failisĂŒsteemi muudatusi "inotify" mehhanismi abil, ja vĂ”imaldab vĂ€ltida kogu töökausta tsĂŒklit, kui tĂ€idetakse selliseid kĂ€ske nagu git status. Lubamine toimub seadistuse kaudu " ja vĂ”imaldab vĂ€ltida kogu töökausta lĂ€biskĂ€imist selliste kĂ€skude tĂ€itmisel nagu git status. Aktiveerimine toimub seadetega «core.fsmonitor».
- Git repack kĂ€sku on lisatud reĆŸiim âwrite-midx=incremental, mis rakendab uut strateegiat metaandmete vĂ€rskendamiseks inkrementaalses MIDX-indeksis (multi-pack index), vĂ”imaldades vĂ€ltida kogu indeksi uuesti pakkimist. Inkrementaalses mitmepakendis (multi-pack) indeksis kasutatakse suurte indeksite asemel kihilist struktuuri â iga kiht katab kindla arvu pack-failide teavet ja salvestatakse eraldi bitmap-faili. See struktuur vĂ”imaldab lisada indeksi objektiandmeid uutest pack-failidest, ĂŒhendades need indeksiga uute kihtide kaudu, ilma et oleks vaja olemasolevaid kihte ĂŒmber ehitada. KĂ€sk git repack âwrite-midx=incremental vĂ”imaldab lisada inkrementaalsesse MIDX-indeksisse uue kihi, mis katab hiljuti loodud pack-failid. Koos repot pakkimise reĆŸiimiga âgeometric annab uus kĂ€sk vĂ”imaluse ĂŒhendada uued objektid mitmest pack-failist ĂŒhte suuremasse pack-faili ning vajadusel pakkida ja ĂŒhendada mitu naaberkihti inkrementaalses MIDX-indeksis. See strateegia vĂ”imaldab git repack'i toimingu tĂ€itmisel ĂŒmber kirjutada ainult ĂŒlemisi kihte, jĂ€ttes vanad suured kihid puutumata, ja vĂ€ltida kihijadasse kontrollimatut laienemist, hoides kihtide koguarvu tasemel, mis on proportsionaalne logaritmiga objekti koguarvust.
- Objektide kĂ€ttesaadavuse bitikaartide genereerimine on mĂ€rkimisvÀÀrselt optimeeritud uue objektipuude lĂ€bimise algoritmi tĂ”ttu, mis vĂ€listab liigse rekursiooni, sĂ€ilitab objektide asukohti, sorteerib bitikaardid enne nende XOR-operatsiooniga ĂŒhendamist ja tĂ€iendab pseudoluutimise bitikaartide genereerimise koodi (pseudo-merge). Optimeerimise testide kaudu Ă”nnestus bitikaartide genereerimise aega vĂ€hendada 612-lt 294 sekundile.
- Rakendatud on vĂ”imalus sĂ”ltumatute hook'ide konfiguratsioonifailides samal ajal kĂ€ivitada. Samal ajal ei saa kĂ€ivitada hook'e, mis mĂ”jutavad jagatud olekuid vĂ”i vĂ”tavad neid arvesse, nĂ€iteks muudavad commit'ide mĂ€rkusi vĂ”i kontrollivad indekse ja tööpuud. Sellegipoolest on vĂ”imalik samaaegselt kĂ€ivitada hook'e lintimise kontrollimiseks ja ĂŒksustestide tegemiseks. Samuti lubavad paralleelset tĂ€itmist hook'id, mida seadistatakse parameetri hook.nimi_huka.parallel = true kaudu. Samuti mÀÀratakse samal ajal töötavate tööde arv seadistusega hook.jobs, hook..jobs vĂ”i kĂ€surea valikuga -j.
- Git pack-objects âpath-walk kĂ€sk sisaldab filtere, nagu blob:none, blob:limit=, tree:0, object:type=, sparse: ja combine:. Testimise kĂ€igus aitas blobide vĂ€ljaarvamine âpath-walk kĂ€su tĂ€itmisel vĂ€hendada genereeritud pack-faili suurust 16% vĂ”rra.
- Lisatud on git format-rev kÀsk, mis vormindab revisjone ja objekte, mille nimesid mainitakse commit'ide loeteludes vÔi mis esinevad vabatekstis (nÀiteks saab seda kasutada hook'ides commit'ide mÀrkuste töötlemiseks).
git last-modified | git format-rev âstdin-mode=text âformat=%an
Junio C Hamano builtin/commit.c
- Vaikimisi on sisse lĂŒlitatud enamiku terminali juhtimissekventside ekraanivaba mĂ€rgistamine teabe- ja vigade sĂ”numites, mille server edastab. Kahjulikule serverile ligipÀÀsu korral vĂ”idi selliseid escape-sekventse kasutada vĂ€ljundi peitmiseks vĂ”i muutmiseks, nĂ€iteks kursori liigutamiseks ja teksti kustutamiseks. Escape-sekventside toetust, mis vĂ”imaldab elemente vĂ€rvidega esile tĂ”sta, on sĂ€ilitatud.
- git checkout -m kÀsk salvestab automaatselt konfliktse kohalikud muudatused stash-ala, ilma et oleks vaja koheselt konflikte lahendada.
- git push kĂ€sule on lisatud vĂ”imalus saata haru mitmele vĂ€lisele Git-serverile ĂŒhe kĂ€suga. NĂ€iteks, et edastada main haru mitte ainult peamisele serverile, vaid ka peegeldustele, saab luua publish grupi serveritest github, gitlab ja mirror:
git config remotes.publish "github gitlab mirror"
git push publish main
- git log âgraph kĂ€sule on lisatud valik âgraph-lane-limit=<N>, mis piirab vertikaalsete ribade arvu harude visualiseerimisel, jĂ€ttes ekraanile ruumi commit'ide andmete jaoks suurte harude arvuga hoidlates.
âŠ
* | | | | 619931f561 Ăhenda haru âdl/posix-unused-warning-clangâ
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: lihtsusta GIT_GNUC_PREREQ() vÔrdlemist
| * | | | ~ ffd45926dc compat/posix.h: puhasta GIT_GNUC_PREREQ() ja UNUSED
|\ \ \ \ \~
| * | | | ~ 3f5203eeb4 ls-files: filtreeri pathspec enne lstat'i
- git log ja git rev-list kĂ€sule on lisatud valik âmax-count-oldest=<N>, mis vĂ”imaldab valida N kĂ”ige vanemat commit'i vahemikus.
Allikas: linux.org.ru
