Ă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
