Riluazhi i sistemit të shpërndarë për menaxhimin e teksteve burimore Git 2.56. Kodi Git shpërndahet nën licencën GPLv2+. Krahasuar me lëshimin e kaluar, në versionin e ri janë pranuar 748 ndryshime, të përgatitura me pjesëmarrjen e 104 zhvilluesve, 39 prej të cilëve morën pjesë për herë të parë në zhvillimin e Git. Kryesore risitë (1, 2, 3):
- Shtuar mĂ«nyra «git add âresolved» pĂ«r zgjidhjen e konflikteve gjatĂ« bashkimit tĂ« degĂ«ve, e cila kontrollon skedarĂ«t pĂ«r praninĂ« e treguesve tĂ« konflikteve dhe, nĂ« rast se gjen njĂ« tregues nĂ« ndonjĂ« skedar, nxjerr njĂ« gabim, duke mos indeksuar asnjĂ« nga skedarĂ«t dhe duke treguar listĂ«n e skedarĂ«ve qĂ« kĂ«rkojnĂ« rregullim. Ndryshe nga komandat «git add âupdate», nĂ« mĂ«nyrĂ«n e re trajtohen vetĂ«m skedarĂ«t tĂ« cilĂ«t janĂ« nĂ« gjendje konflikti, ndĂ«rsa skedarĂ«t e modifikuar tĂ« pa lidhur me konfliktin injorohen, duke lejuar njĂ« pĂ«rfundim tĂ« sigurt tĂ« bashkimit tĂ« degĂ«ve, edhe nĂ«se nĂ« katalogun punues ka redaktime tĂ« tjera tĂ« papĂ«rfunduara (komanda «git add âupdate» i shtonte nĂ« indeks tĂ« gjithĂ« skedarĂ«t e modifikuar qĂ« ishin tĂ« ndjekur mĂ« parĂ« nĂ« katalogun punues).
- Punimi me repozitorĂ«t e mĂ«dhenj Ă«shtĂ« optimizuar ndjeshĂ«m, pĂ«r shkak tĂ« optimizimit tĂ« algoritmit pĂ«r gjetjen e komiteteve tĂ« fundit tĂ« pĂ«rbashkĂ«ta gjatĂ« bashkimit tĂ« degĂ«ve dhe krahasimit tĂ« komiteteve. GjatĂ« procesit tĂ« punĂ«s tani merren parasysh komitetet qĂ« i pĂ«rkasin pĂ«rjashtimisht njĂ« prej degĂ«ve, çka lejon ndalimin e skanimit menjĂ«herĂ« pas zbulimit tĂ« tĂ« gjithĂ« paraardhĂ«sve tĂ« mundshĂ«m, pa humbur kohĂ« nĂ« ndjekjen e historisĂ« sĂ« ndryshimeve. NĂ« njĂ« nga repozitorĂ«t e testuar, shpejtĂ«sia e kĂ«rkimit u rrit mesatarisht 20 herĂ«, ndĂ«rsa nĂ« njĂ« tjetĂ«r pĂ«rshpejtimi arriti deri nĂ« 70 herĂ«. Duke ekzekutuar komandĂ«n «git merge-base âall v4.8 v4.9» nĂ« njĂ« repozitor tĂ« bĂ«rthamĂ«s Linux, numri i hapave tĂ« kalimit u ul nga 167,000 nĂ« 3,800.
- PĂ«r pĂ«rdorimin nĂ« serverĂ«, Ă«shtĂ« adaptuar mĂ«nyra e ripakimit «âpath-walk», e cila lejon krijimin e skedarĂ«ve pack mĂ« kompakt pĂ«rmes grupimit tĂ« objekteve sipas rrugĂ«s sĂ« tyre nĂ« pemĂ«n e katalogĂ«ve (pĂ«r shembull, pĂ«r repozitorin Fluent UI, pĂ«rdorimi i «âpath-walk» lehtĂ«soi uljen e madhĂ«sisĂ« sĂ« skedarit pack nga 558 MB nĂ« 164 MB). NĂ« versionin e ri Ă«shtĂ« implementuar mundĂ«sia e pĂ«rdorimit tĂ« mĂ«nyrĂ«s «âpath-walk» sĂ« bashku me hartat e arritshmĂ«risĂ« (reachability bitmap) dhe ishujt delta (delta island), tĂ« cilat pĂ«rdoren nga ofruesit e git-hosting pĂ«r tĂ« pĂ«rshpejtuar punĂ«n dhe pĂ«r tĂ« izoluar forkat nga repozitori kryesor.
- Eliminimi i ngushticave që çonin në llogaritje të tepërta në depo të mëdha: janë hequr kontrollet e panevojshme të gjendjes së skedarëve gjatë regjistrimit në reftable; është shfuqizuar skanimi i përsëritur i listës për çdo futje të një skedari pack të ri; operacionet me reftable, ku janë akumuluar shumë rekordet e fshirjes janë përshpejtuar; është optimizuar puna e "git diff" kur janë caktuar kufizime për rrugët e skedarëve. Pas optimizimeve, puna me reftable në numër të madh fshirjesh është përshpejtuar 65 herë (nga 13 sekonda në 0.2 sekonda), dhe ekzekutimi i komandës problematike "git diff" në depozitën Chromium me 500000 elementë në indeks tani zgjat 0.07 sekonda në vend të 8 minutave.
- Në ekipin eksperimental "git history", i cili ofron mundësi për ri-shkrimin e historisë së ndryshimeve, është shtuar operacioni "git history drop" për të fshirë një komit të zgjedhur me bashkimin automatik të pasardhësve të tij me komitin prind.
- ĂshtĂ« shtuar komanda "git branch âdelete-merged âorigin/*â âtopic-*'" pĂ«r fshirjen e sigurt tĂ« grupeve tĂ« degĂ«ve lokale, ndryshimet e tĂ« cilave tashmĂ« janĂ« dĂ«rguar nĂ« njĂ« depo tĂ« jashtme. PĂ«rdorimi i maskave mbĂ«shtetet pĂ«r filtrimin e degĂ«ve dhe depove. PĂ«r analizĂ«n e pretenduesve pĂ«r fshirje, pa e ekzekutuar nĂ« tĂ« vĂ«rtetĂ« operacionin, mund tĂ« pĂ«rdoret flamuri "âdry-run".
- ĂshtĂ« shtuar komanda "git refs create|update|delete|rename", e cila bashkon operacionet me nivel tĂ« ulĂ«t pĂ«r krijimin, fshirjen, riemĂ«rimin dhe pĂ«rditĂ«simin e referencave.
- NĂ« komandĂ«n "git bisect run" Ă«shtĂ« shtuar opsioni "âreset-when-found=[]", i cili kthen automatikisht depozitĂ«n nĂ« gjendjen para fillimit tĂ« kĂ«rkimit ose e lĂ« aktiv komitin problematik, pa patur nevojĂ«n pĂ«r tĂ« ekzekutuar veçmas komandĂ«n "git bisect reset".
- NĂ« komandĂ«n "git replay" Ă«shtĂ« shtuar flamuri "âlinearize" pĂ«r pĂ«rdorimin e njĂ« topologjie tĂ« sheshtĂ« tĂ« pĂ«rzierjes, ashtu si me "git rebase âno-rebase-merges", por pa iu referuar pemĂ«s sĂ« punĂ«s.
- NĂ« komandĂ«n "git log âfollow" Ă«shtĂ« bĂ«rĂ« e mundur ndjekja e riemĂ«rimit tĂ« skedarĂ«ve nĂ« njĂ« histori ndryshimesh jo-lineare, pĂ«r shembull, gjatĂ« bashkimeve tĂ« nĂ«ndegĂ«ve. Ruga pĂ«r skedarin tani ruhet veçmas pĂ«r çdo komit prind, duke e bĂ«rĂ« rezultatin tĂ« pavarur nga rendi i kalimit tĂ« historisĂ« sĂ« komiteve.
- Shtuar mundĂ«sia e pĂ«rdorimit tĂ« komandĂ«s «git repack -a âfilter=blob:limit=1m âdrop-filtered» pĂ«r tĂ« hequr objektet tĂ« mĂ«dha blob, tĂ« ngarkuara nĂ« kĂ«rkesĂ« (on demand) nga njĂ« depo ekstern dhe tĂ« pa pĂ«rdorura nĂ« indeksin aktual. Kur tĂ« bĂ«het referimi nĂ« kĂ«to objekte mĂ« vonĂ«, ato do tĂ« ngarkohen automatikisht pĂ«rsĂ«ri.
- NĂ« komandĂ«n «git log âgraph», pĂ«r grafĂ«t me disa ndĂ«rmarrje tĂ« pavarura Ă«shtĂ« realizuar shtimi i hapĂ«sirave pĂ«r tĂ« ndarĂ« qartĂ« komitet e pa lidhura.
- Siguruar identifikimin e gabimeve tipike tĂ« shkrimit, siç Ă«shtĂ« specifikimi «git push origin/main» nĂ« vend tĂ« «git push origin main» ose «git branch âset-upstream-to origin main» nĂ« vend tĂ« «git branch âset-upstream-to=origin/main», dhe shfaqja e njĂ« kĂ«shille pĂ«r pĂ«rdorimin e variantit tĂ« saktĂ«.
Burimi: opennet.ru
