Git 2.55 vĂ€ljaandmine, kus vaikimisi on sisse lĂŒlitatud Rusti tugi

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

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