Esitletud on jaotatud versioonikontrollisĂŒsteemi Git 2.55. Peamised muudatused: Rusti vaikimisi tugi, Linuxi jaoks rakendatud fsmonitor protsess, uued strateegiad inkrementeeritud MIDX-indeksi ĂŒmberpakendamiseks, kĂ€sk «git history fixup» muudetud commitide parandamiseks, objekti kĂ€ttesaadavuse bitikaartide genereerimise optimeerimine, hookide samaaegne tĂ€itmine, kĂ€sk «git format-rev». Git'i kood on litsentseeritud GPLv2+ alusel.
VÔrreldes eelneva versiooniga on uues versioonis rakendatud 505 muudatust, mille on ette valmistanud 100 arendajat, kellest 33 osaleb Git'i arendamises esmakordselt. Peamised uuendused (1, 2, 3):
- Vaikimisi on sisse lĂŒlitatud Rusti keele komponentide tugi. Kompilaator rustc
on lisatud koostamise sĂ”ltuvuste hulka. Rustita koostamiseks saab kasutada lippu «NO_RUST=1» make utiliidi kĂ€ivitamisel vĂ”i «-Drust=disabled» «meson configure» kĂ€ivitamisel. Rusti koostamise vĂ€ljalĂŒlitamise vĂ”imalus toetatakse kuni Git 3.0 haruni, kus Rustist saab kohustuslik sĂ”ltuvus. Rusti keeles on vĂ€ljatöötatud kiht, et tagada ĂŒhilduvus SHA-1 ja SHA-256 hash'idega, samuti mĂ”ned sisemised funktsioonid, nagu muutuva pikkusega tĂ€isarvude kodeerimine ja dekodeerimine. Tulevikus oodatakse Rusti keeles ĂŒlevaatamist suurematele Git'i sisemistele komponentidele. - Eksperimentaalsesse meeskonda «git history», mis pakub vĂ”imalusi muudatuste ajaloos uuesti kirjutamiseks, on lisatud operatsioon «git history fixup» commitide parandamiseks. Operatsioon «fixup» vĂ”imaldab edastada muudatused, mis on lisatud «git add» kaudu, varasemale commitile ja automaatselt kirjutada kĂ”ik jĂ€rgnevad commitid ĂŒmber nii, nagu oleks teostatud kĂ€sku «git commit âfixup=<commit>» ja alustatud «git rebase âautosquash <commit>~».
- Linuxi platvormil on rakendatud taustaprotsess fsmonitor, mis jĂ€lgib failisĂŒsteemi muudatusi inotify mehhanismi abil ja vĂ”imaldab vĂ€ltida kogu töökausta lĂ€bimist selliste kĂ€skude, nagu «git status», teostamisel. LĂŒlitamine toimub seadistuse «core.fsmonitor» kaudu.
- KĂ€sku «git repack» on lisatud reĆŸiim «âwrite-midx=incremental», mis rakendab uut strateegiat metadatade uuendamiseks inkrementaalses MIDX-indeksis (multi-pack index), mis vĂ”imaldab vĂ€ltida kogu indeksi ĂŒmberpakendamist. Inkrementaalses mitme paketi indeksis kasutatakse ĂŒhe suure indeksi asemel, mis sisaldab teavet objektide jaotumise kohta pakifailides, kihtide jagamist â iga kiht katab teatava arvu pakifailide ja salvestatakse eraldi bitmap-faili. Sarnane struktuur vĂ”imaldab indeksi lisada uute pakifailide objektide andmeid, lisades indeksi uued kihid ilma olemasolevaid kihte ĂŒmber ehitamata.
KĂ€sk «git repack âwrite-midx=incremental» vĂ”imaldab lisada inkrementaalsesse MIDX-indeksisse uue kihi, mis katab hiljuti loodud pakifailid. Koos reposte pakkimise reĆŸiimiga «âgeometric» vĂ”imaldab uus kĂ€sk ĂŒhendada uued objektid mitmest pakifailist ĂŒhe suuremasse pakifaili ja vajadusel teostada mitme naaberkihi pakendamist ja ĂŒhendamist inkrementaalses MIDX-indeksis. Sarnane strateegia vĂ”imaldab kĂ€sku «git repack» kĂ€ivitades kirjutada ainult ĂŒlemise kihid, jĂ€ttes vanad suured kihid puutumata, ja vĂ€ltida kontrollimatut kihtide ahela suurenemist, hoides kihtide koguarvu tasemel, mis on proportsionaalne logaritmiga kogu objektide arvust.
- Objektide kĂ€ttesaadavuse bitikaartide genereerimine on oluliselt optimeeritud uue objekti puu lĂ€bimise algoritmi abil, mis vĂ€listab liigse rekurssi, objektide positsioonide vahelaidamise, bitikaartide sortimise enne nende ĂŒhendamist XOR-operatsiooniga ja pseudokombineerimise (pseudo-merge) bitikaartide genereerimise koodide ĂŒmbertegemise. Testreposiit kuivĂ”rd optimeerimiste abil vĂ€henes bitikaartide genereerimise aeg 612-lt 294 sekundile.
- On toiminud vĂ”imalus samaaegselt kĂ€ivitada sĂ”ltumatuid hook'e konfiguratsioonifailides. Samaaegselt ei saa kĂ€ivitada hook'e, mis mĂ”jutavad ĂŒhist olekut vĂ”i arvestavad sellega, nĂ€iteks muudavad commit'ide mĂ€rkmeid vĂ”i uurivad indekseid ja tööharu. Samas vĂ”ib samaaegselt kĂ€ivitada hook'e lintimise kontrollimiseks ja unit-testide teostamiseks. Samaaegseks kĂ€ivitamiseks lubatud hook'id seadistatakse parameetri «hook.Ń ŃĐș_nimi.parallel = true» kaudu. Samaaegselt kĂ€ivitatavate tööde arvu mÀÀratakse seadistuse hook.jobs, hook.<sĂŒndmus>.jobs vĂ”i kĂ€surea valiku «-j» kaudu.
- KĂ€sus «git pack-objects âpath-walk» on realiseeritud filtrite mÀÀramise vĂ”imalus, nagu «blob:none», «blob:limit=<n>», «tree:0», «object:type=<type>», «sparse:<oid>» ja «combine:». Tehtud testis vĂ”imaldas blob'ide kĂ”rvaldamine «âpath-walk» kĂ€ivitamisel vĂ€hendada loodud pack-faili mahtu 16%.
- Lisatud kÀsk «git format-rev» versioonide ja objektide nimede vormindamiseks, mis mainitakse commit'ide loendites vÔi esinevad suvalises tekstis (nÀiteks vÔib kasutada hook'ides commit'ide mÀrkmete töötlemiseks).
git last-modified | git format-rev âstdin-mode=text âformat=%an
Junio C Hamano builtin/commit.c
- Enamiku terminali juhtimisjĂ€rjestuste ekraaniviimistlemine on vaikimisi sisse lĂŒlitatud teabe- ja veateates, mis edastatakse. serverilt. Pahatahtliku pöördumise korral serveri vĂ”isid sellised escape-jĂ€rjestused olla kasutatud vĂ€ljundi varjamiseks vĂ”i modifitseerimiseks, nĂ€iteks kursori liikumise ja teksti puhastamise escape-jĂ€rjestuste kaudu. Rikkumiste vĂ€rvimiseks jÀÀb escape-jĂ€rjestuste tugi alles.
- KĂ€sk «git checkout -m» salvestab nĂŒĂŒd automaatselt konfliktis olevad kohalikud muutused stash-ala, ilma et oleks tingimata vaja konflikti kohe lahendada.
- KĂ€sku «git push» on lisatud vĂ”imalus lĂ”ime saatmiseks mitmele vĂ€lisele Git-serverile ĂŒhe kĂ€suga. NĂ€iteks, et saata lĂ”ime main mitte ainult peaserverisse, vaid ka peegeldustesse, saab luua rĂŒhma «publish» koos serverid «github», «gitlab» ja «mirror»:
git config remotes.publish «github gitlab mirror»
git push publish main - Git log kĂ€sule on lisatud vĂ”imalus ââgraph-lane-limit=<N>â, et piirata vertikaalsete ribade arvu harusid visualiseerimisel, jĂ€ttes ekraanile ruumi committe andmete jaoks, kus on palju harusid.
âŠ
* | | | | 619931f561 Ăhendab haru âdl/posix-unused-warning-clangâ
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: lihtsustatakse GIT_GNUC_PREREQ() vÔrdlust
| * | | | ~ ffd45926dc compat/posix.h: korrastatakse GIT_GNUC_PREREQ() ja UNUSED
|\ \ \ \ \~
| * | | | ~ 3f5203eeb4 ls-files: filtreeri pathspec enne lstat - Git log ja git rev-list kĂ€sule on lisatud vĂ”imalus ââmax-count-oldest=<N>, mis vĂ”imaldab valida N kĂ”ige vanemat commitit vahemikus.
Allikas: opennet.ru
