Git 2.55 väljaanne, kus vaikimisi on tuge lisatud Rust'i toetamiseks.

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

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster