Lëshimi i Git 2.55 me mbështetje për Rust të aktivizuar si parazgjedhje

ËshtĂ« prezantuar lĂ«shimi i sistemit tĂ« menaxhimit tĂ« kodit tĂ« shpĂ«rndarĂ« Git 2.55. NdĂ«r ndryshimet kryesore: aktivizimi i ndĂ«rtimit me Rust si parazgjedhje, implementimi i procesit fsmonitor pĂ«r Linux, njĂ« strategji e re pĂ«r riambalazhimin e indekseve inkrementale MIDX, komanda «git history fixup» pĂ«r korrigjimin e komiteteve, optimizimi i gjenerimit tĂ« hartave tĂ« disponueshmĂ«risĂ« sĂ« objekteve, mbĂ«shtetje pĂ«r ekzekutimin paralel tĂ« hook-eve, komanda «git format-rev». Kodi i Git shpĂ«rndahet nĂ«n licencĂ«n GPLv2+.

Në krahasim me lëshimin e kaluar, në versionin e ri janë përfshirë 505 ndryshime, të përgatitura me pjesëmarrjen e 100 zhvilluesve, 33 prej të cilëve morën pjesë për herë të parë në zhvillimin e Git. Novitetet kryesore (1, 2, 3):

  • MbĂ«shtetja pĂ«r komponentĂ«t e shkruar nĂ« gjuhĂ«n Rust Ă«shtĂ« e aktivizuar si parazgjedhje. Kompiliatori rustc
    është shtuar në varësitë e ndërtimit. Për ndërtim pa Rust, mund të përdorni flamurin "NO_RUST=1" gjatë ekzekutimit të utilitarit make ose "-Drust=disabled" gjatë ekzekutimit të "meson configure". Mundësia për të çaktivizuar ndërtimin me Rust do të mbështetet deri në degën Git 3.0, në të cilën Rust do të përfshihet në varësitë e detyrueshme. Një shtresë për portabilitetin midis konfigurimeve me hash SHA-1 dhe SHA-256 është implementuar në gjuhën Rust, si edhe disa funksione të brendshme, të tilla si kodimi dhe dekodimi i vlerave të numrave me gjatësi variabël. Në të ardhmen, pritet të përfundohet në Rust komponentë të rëndësishëm të brendshëm të Git.
  • Ekspeditore e komandĂ«s eksperimentale "git history", e cila ofron mundĂ«si pĂ«r rishkrimin e historisĂ« sĂ« ndryshimeve, Ă«shtĂ« shtuar operacioni "git history fixup" pĂ«r tĂ« korrigjuar njĂ« commit. Ofrimi "fixup" lejon qĂ« ndryshimet e shtuar pĂ«rmes "git add" tĂ« transferohen nĂ« njĂ« commit mĂ« tĂ« hershĂ«m dhe automatikisht tĂ« rishkruajnĂ« tĂ« gjitha commitĂ«t e mĂ«passhĂ«m nĂ« mĂ«nyrĂ« analogjike me ekzekutimin e komandĂ«s "git commit --fixup=<commit>" dhe nisjen e "git rebase --autosquash <commit>~".
  • PĂ«r platformĂ«n Linux, Ă«shtĂ« implementuar njĂ« proces i prapavijĂ«s fsmonitor, i cili ndjek ndryshimet nĂ« sistemin e dosjeve duke pĂ«rdorur mekanizmin inotify dhe lejon shmangien e skanimit tĂ« tĂ«rĂ« katalogut tĂ« punĂ«s kur ekzekutohen komanda si "git status". Aktivizimi bĂ«het pĂ«rmes konfigurimit "core.fsmonitor".
  • NĂ« komandĂ«n "git repack" Ă«shtĂ« shtuar njĂ« mĂ«nyrĂ« "—write-midx=incremental", e cila implementon njĂ« strategji tĂ« re pĂ«r pĂ«rditĂ«simin e metadata nĂ« MIDX-in e inkrementit (multi-pack index), duke lejuar shmangien e ripaketimit tĂ« tĂ« gjithĂ« indeksit. NĂ« indeksin e inkrementit, nĂ« vend tĂ« njĂ« indeksi tĂ« madh qĂ« pĂ«rmban informacion rreth shpĂ«rndarjes sĂ« objekteve nĂ« paketa, aplikohet ndarja nĂ« shtresa — secila shtresĂ« mbulon njĂ« numĂ«r tĂ« caktuar paketash dhe ruhet nĂ« njĂ« skedar bitmap tĂ« veçantĂ«. Kjo strukturĂ« lejon shtimin e tĂ« dhĂ«nave rreth objekteve nĂ« paketat e reja duke lidhur shtresa tĂ« reja me indeksin pa riparimin e shtresave ekzistuese.

    Ekipi "git repack —write-midx=incremental" mundĂ«son shtimin e njĂ« shtrese tĂ« re nĂ« indeksin MIDX inkremental qĂ« mbulon skedarĂ«t e paketave tĂ« sapo krijuar. NĂ« kombinim me modin e paketimit tĂ« repozitorĂ«ve "—geometric", komanda e re ofron mundĂ«sinĂ« pĂ«r tĂ« bashkuar objekte tĂ« reja nga disa skedarĂ« paketash nĂ« njĂ« skedar mĂ« tĂ« madh dhe, nĂ«se Ă«shtĂ« e nevojshme, tĂ« realizohet paketimi dhe bashkimi i disa shtresave fqinjĂ« tĂ« indeksit MIDX inkremental. Kjo strategji lejon qĂ«, gjatĂ« ekzekutimit tĂ« "git repack", tĂ« rishkruhen vetĂ«m shtresat e sipĂ«rme, duke lĂ«nĂ« tĂ« paprekura shtresat e vjetra mĂ« tĂ« mĂ«dha, si dhe tĂ« shmanget zgjerimi i pakontrolluar i zinxhirit tĂ« shtresave, duke mbajtur numrin total tĂ« shtresave nĂ« njĂ« nivel proporcionale me logarifmin e numrit total tĂ« objekteve.

  • Gjenerimi i hartave tĂ« disponueshmĂ«risĂ« sĂ« objekteve Ă«shtĂ« optimizuar ndjeshĂ«m falĂ« njĂ« algoritmi tĂ« ri pĂ«r pĂ«rshkrimin e pemĂ«s sĂ« objekteve, duke eliminuar rekurzionin e tepĂ«rt, duke cache-uar pozitat e objekteve, duke renditur hartat para bashkimit tĂ« tyre me operacionin XOR dhe duke ripunuar kodin pĂ«r krijimin e hartave tĂ« pseudo-bashkimit (pseudo-merge). NĂ« depo testuese, optimizimet kanĂ« lejuar qĂ« koha e gjenerimit tĂ« hartave tĂ« ulet nga 612 nĂ« 294 sekonda.
  • ËshtĂ« realizuar mundĂ«sia e ekzekutimit paralel tĂ« hook-ve tĂ« pavarur nĂ« skedarĂ«t e konfigurimit. Hook-et qĂ« ndikojnĂ« nĂ« gjendjen e pĂ«rbashkĂ«t ose e marrin parasysh atĂ«, si ndryshimi i shĂ«nimeve tĂ« commit-it ose kontrollimi i indekseve dhe pemĂ«s sĂ« punĂ«s, nuk mund tĂ« ekzekutohen paralelisht. MegjithatĂ«, mund tĂ« ekzekutohen paralelisht hook-et pĂ«r kontrollin me linters dhe pĂ«r ekzekutimin e testeve unitare. Hook-et qĂ« lejojnĂ« ekzekutimin paralel konfigurohen pĂ«rmes parametrave "hook.emri_huk.paralel = true". Numri i punimeve qĂ« ekzekutohen paralelisht pĂ«rcaktohet pĂ«rmes konfigurimit hook.jobs, hook..jobs ose opsioni tĂ« linjĂ«s sĂ« komandĂ«s "-j".
  • NĂ« ekipin «git pack-objects —path-walk» Ă«shtĂ« realizuar mundĂ«sia pĂ«r tĂ« specifikuar filtra, si «blob:none», «blob:limit=<n>», «tree:0», «object:type=<type>», «sparse:<oid>» dhe «combine:». NĂ« testin e kryer, heqja e blob-eve gjatĂ« ekzekutimit tĂ« «—path-walk» rezultoi nĂ« njĂ« reduktim prej 16% tĂ« madhĂ«sisĂ« sĂ« skedarit pack tĂ« formuar.
  • Shtohet komanda «git format-rev» pĂ«r formatimin e revizioneve dhe emrave tĂ« objekteve, tĂ« pĂ«rmendura nĂ« listat e komiteteve ose qĂ« ndodhin nĂ« tekstin e rastĂ«sishĂ«m (p.sh., mund tĂ« pĂ«rdoret nĂ« hook pĂ«r tĂ« pĂ«rpunuar shenimet e komiteteve).

    git last-modified | git format-rev —stdin-mode=text —format=%an

    Junio C Hamano builtin/commit.c

  • Aktivizohet pĂ«r default kencodezimi i shumicĂ«s sĂ« sekuencave tĂ« kontrollit tĂ« terminalit nĂ« mesazhet informative dhe tekstin e gabimeve qĂ« transmetohen serverin. Kur lidhet me dĂ«mshĂ«m server sekuenca tĂ« tilla escape mund tĂ« pĂ«rdoren pĂ«r tĂ« fshehur ose modifikuar daljen, pĂ«r shembull, pĂ«rmes sekuencave escape pĂ«r tĂ« lĂ«vizur kursorin dhe pĂ«r tĂ« pastruar tekstin. MbĂ«shtetja pĂ«r sekuencat escape pĂ«r theksimin e elementeve me ngjyrĂ« Ă«shtĂ« lĂ«nĂ«.
  • Ekipi «git checkout -m» tani automatikisht ruan ndryshimet e konfliktit lokale nĂ« zonĂ«n e stash pa nevojĂ«n pĂ«r tĂ« zgjidhur menjĂ«herĂ« konfliktin.
  • Ekipa «git push» mban mundĂ«sinĂ« pĂ«r t'i dĂ«rguar degĂ«t nĂ« disa servera tĂ« jashtĂ«m Git me njĂ« komandĂ«. PĂ«r shembull, pĂ«r tĂ« transferuar degĂ«n main jo vetĂ«m nĂ« serverin kryesor, por edhe nĂ« pasqyra, mund tĂ« krijoni njĂ« grup «publish» nga serverĂ«ve «github», «gitlab» dhe «mirror»:

    git config remotes.publish «github gitlab mirror»
    git push publish main

  • Ekspedito «git log —graph» Ă«shtĂ« shtuar opsioni «—graph-lane-limit=<N>» pĂ«r tĂ« kufizuar numrin e vijave vertikale gjatĂ« vizualizimit tĂ« degĂ«ve, duke lejuar tĂ« lĂ«rĂ« hapĂ«sirĂ« nĂ« ekran pĂ«r tĂ« dhĂ«nat mbi komitetet nĂ« repozitorĂ«t me numra tĂ« mĂ«dha degĂ«sh.

    

    * | | | | 619931f561 Bashko degĂ«n ‘dl/posix-unused-warning-clang’
    |\ \ \ \ \
    | * | | | ~ cf48887610 compat/posix.h: thjeshtoni krahasimin GIT_GNUC_PREREQ()
    | * | | | ~ ffd45926dc compat/posix.h: pastroni GIT_GNUC_PREREQ() dhe UNUSED
    |\ \ \ \ \~
    | * | | | ~ 3f5203eeb4 ls-files: filtro pathspec para lstat

  • NĂ« komandat «git log» dhe «git rev-list» Ă«shtĂ« shtuar opsioni «—max-count-oldest=<N>, i cili lejon tĂ« zgjidhni N komitetet mĂ« tĂ« vjetra nĂ«

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster