Esitlemine ressursihalduse sĂŒsteemi Git 2.55. Uute muudatuste hulka kuuluvad: Rust'i koostamise vaikimisi sisselĂŒlitamine, Linuxi fsmonitor protsessi rakendamine, uus strateegia inkrementaalse MIDX-indeksi ĂŒmberpakendamiseks, kĂ€sk 'git history fixup' kommiteerimise parandamiseks, objektide kĂ€ttesaadavuse bitikaarte genereerimise optimeerimine, hook-ide samal ajal tĂ€itmise toetus, kĂ€sk 'git format-rev'. Git'i kood on litsentseeritud GPLv2+ alusel.
VÔrreldes eelmise vÀljaandega on uude versiooni vastu vÔetud 505 muudatust, mille on ette valmistanud 100 arendajat, kellest 33 osalesid Git'i arenduses esmakordselt. Peamised uuendused (1, 2, 3):
- Vaikimisi on saadaval tugi Rust'i komponente. Kompilaator rustc
on lisatud kogumise sĂ”ltuvustesse. Rustita kogumise jaoks vĂ”ib kasutada lippu "NO_RUST=1" utiliidi make kĂ€ivitamisel vĂ”i "-Drust=disabled" kĂ€su "meson configure" tĂ€itmise ajal. Rusti kogumise keelamise vĂ”imalust toetatakse kuni Git 3.0 haruni, kus Rust on kohustuslike sĂ”ltuvuste hulka lisatud. Rusti keeles on rakendatud kiht, et tagada ĂŒhilduvus SHA-1 ja SHA-256 hashidega, samuti mĂ”ned sisemised funktsioonid, nĂ€iteks muutuja pikkuse tĂ€isarvude kodeerimine ja dekodeerimine. Tulevikus oodatakse Rusti tarkvara kaudu oluliselt ĂŒmber töödelda Git sisemisi komponente. - Eksperimentaalsesse kĂ€sureasse "git history", mis pakub vĂ”imalusi ajaloo uuendamiseks, on lisatud toiming "git history fixup" commit'i parandamiseks. Toiming "fixup" vĂ”imaldab edastada muudatused, mis on lisatud lĂ€bi "git add", varasemasse commit'i ja automaatselt kirjutada ĂŒmber kĂ”ik sellele jĂ€rgnevad commit'id sarnaselt kĂ€su âgit commit âfixup=â tĂ€itmisega ja âgit rebase âautosquash ~â kĂ€ivitamisega.
- Linux platvormil on rakendatud taustaprotsess fsmonitor, mis jĂ€lgib failisĂŒsteemi muutusi inotify mehhanismi abil ning vĂ”imaldab vĂ€ltida kogu töökausta lĂ€bimist selliste kĂ€skude nagu "git status" tĂ€itmisel. Sisse lĂŒlitamine toimub seadistuse "core.fsmonitor" kaudu.
- KĂ€sku âgit repackâ on lisatud reĆŸiim ââwrite-midx=incrementalâ, mis rakendab uut strateegiat metaandmete uuendamiseks inkrementaalses MIDX-indeksis (multi-pack index), vĂ”imaldades vĂ€ltida kogu indeksi uuesti kokkupanekut. Inkrementaalses mitme pakendi indeksis kasutatakse ĂŒhe suure indeksi asemel, mis sisaldab teavet objektide jaotumise kohta pack-failide vahel, kihistamist â iga kiht katab kindla arvu pack-failide andmed ja salvestatakse eraldi bitmap-faili. Selline struktuur vĂ”imaldab lisada indeksisse objektiandmeid uutesse pack-failidesse, lisades indeksisse uusi kihte ilma olemasolevaid kihte ĂŒmber seadmata.
KĂ€sk «git repack âwrite-midx=incremental» vĂ”imaldab lisada inkrementaalsesse MIDX-indekse uue kihi, mis katab hiljuti loodud pack-failid. Koos reposte pakkimise reĆŸiimiga «âgeometric» vĂ”imaldab uus kĂ€sk ĂŒhendada uued objektid mitmest pack-failist ĂŒheks suuremaks pack-failiks ja vajadusel teostada mitme naaberkihi inkrementaalse MIDX-indeksi pakkimine ja ĂŒhendamine. Selline strateegia vĂ”imaldab «git repack» kĂ€itamisel kirjutada ĂŒle ainult ĂŒlemised kihid, jĂ€ttes vanad suured kihid puutumatuks, ning vĂ€ltida kontrollimatut kihtide kasvu, hoides kihi ĂŒldarvu tasemel, mis on proportsionaalne objekti koguarvu logaritmiga.
- Oluliselt on optimeeritud objekti kĂ€ttesaadavuse bitikaartide genereerimine uus algoritmi abil, mis vĂ€listab liigse rekursiooni, objekti positsioonide vahemĂ€lu, bitikaartide sortimise enne nende Xori operatsiooniga ĂŒhendamist ning koodi ĂŒmberehituse pseudoliitumise (pseudo-merge) bitikaartide loomiseks. Optimeerimise testimisreposiit sisaldab tulemusi, mis on vĂ€hendanud bitikaartide genereerimise aega 612 sekundist 294 sekundini.
- Kasutusele on vĂ”etud vĂ”imalus kĂ€ivitada sĂ”ltumatute konfigureerimise hook-ide paralleelset tĂ€itmist. Paralleelselt ei saa kĂ€ivitada hook-e, mis mĂ”jutavad ĂŒhiste seisundite sĂ€ilitamist vĂ”i arvestavad sellega, nĂ€iteks, muutes commitide mĂ€rkusi vĂ”i uurides indekseid ja töötavat puu. Samamoodi on vĂ”imalik paralleelselt kĂ€ivitada linteerimise ja ĂŒhtse testimise hook-e. Paralleelselt tĂ€idetavaid hook-e seadistatakse parameetri âhook.ĐžĐŒŃ_Ń ŃĐșа.parallel = trueâ kaudu. Samuti mÀÀratakse samaaegselt kĂ€ivitatavate tööde arv hook.jobs, hook.<event>.jobs seadistamise vĂ”i kĂ€surea valiku â-jâ abil.
- KĂ€esolevas 'git pack-objects âpath-walk' meeskonnas on vĂ”imalik mÀÀrata filtreid, nagu 'blob:none', 'blob:limit=', 'tree:0', 'object:type=', 'sparse:' ja 'combine:'. Teostatud testis vĂ”imaldas blobide kĂ”rvaldamine 'âpath-walk' kĂ€ivitamisel vĂ€hendada genereeritud pack-faili suurust 16%.
- Lisatud kÀsk 'git format-rev' versioonide ja objektide nimede vormindamiseks, mis on mainitud commitide loeteludes vÔi esinevad juhuslikus tekstis (nt saab kasutada hookides commitite mÀrkmete töötlemiseks).
git last-modified | git format-rev âstdin-mode=text âformat=%an
Junio C Hamano builtin/commit.c
- Enamiku terminali juhtimissekvenaside ekraanistamine on vaikimisi sisse lĂŒlitatud infoteadetes ja veatextis, mis edastatakse serveriga. Pahaloomulistele juurde pÀÀsemisel serverile selliseid escape-sekvense saab kasutada vĂ€ljundi varjamiseks vĂ”i modifitseerimiseks, nĂ€iteks lĂ€bi kursoriga liikumise ja teksti kustutamise escape-sekvenste. Toetatakse siiski escape-sekvense vĂ€rvidega elementide esitlemiseks.
- KĂ€sk 'git checkout -m' salvestab nĂŒĂŒd automaatselt vastuolulised kohalikud muudatused stash-ala, ilma et oleks vaja konflikti viivitamatult lahendada.
- KĂ€sku «git push» on lisatud vĂ”imalus saata haru mitmele vĂ€lisele Git-serverile ĂŒhe kĂ€suga. NĂ€iteks, et saata haru main mitte ainult peamisele serverile, vaid ka peeglitele, saab luua grupi «publish» koos serverite «github», «gitlab» ja «mirror»:
git config remotes.publish «github gitlab mirror»
git push publish main - KĂ€sku «git log âgraph» on lisatud vĂ”imalus «âgraph-lane-limit=<N>» vertikaalsete ribade arvu piiramiseks harude visualiseerimise ajal, mis vĂ”imaldab jĂ€tta ekraanile ruumi commitâide andmete jaoks suurte haru arvuga repos.
âŠ
* | | | | 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 - KĂ€sku «git log» ja «git rev-list» on lisatud vĂ”imalus «âmax-count-oldest=<N>, mis vĂ”imaldab valida N kĂ”ige vanemat commit'i mÀÀratud vahemikus.
Allikas: opennet.ru
