Disponohet shpërndarja e sistemit të menaxhimit të kodit të burimit Git 2.31. Git është një nga sistemet më të njohura, të besueshme dhe me performancë të lartë për menaxhimin e versioneve, duke ofruar mjete fleksibile për zhvillimin jo linear, të bazuara në degëzimin dhe bashkimin e degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve "në të kaluarën" përdoret një hashim i implicit i gjithë historisë së mëparshme në çdo commit, gjithashtu është e mundur të konfirmohet përmes nënshkrimeve digjitale të zhvilluesve të etiketimeve dhe komiteve specifike.
Krahasuar me shpërndarjen e kaluar, versioni i ri pranoi 679 ndryshime, të përgatitura me pjesëmarrjen e 85 zhvilluesve, nga të cilët 23 morën pjesë për herë të parë në zhvillim. Risi kryesore:
- Shtuar ekipi "git maintenance", qĂ« lejon tĂ« kryhen punĂ« periudhore nĂ« sisteme qĂ« nuk mbĂ«shtesin cron. PĂ«r shembull, me anĂ« tĂ« kĂ«tij ekipi, mund tĂ« organizoni njĂ« ekzekutim periodic tĂ« procesit tĂ« paketimit tĂ« depozitĂ«s, pĂ«r tĂ« mos pritur pĂ«rfundimin e bllokimit tĂ« depozitĂ«s gjatĂ« ekzekutimit automatik tĂ« paketimit ndĂ«rsa ekzekutoni komanda tĂ« ndryshme. Ekipi "git maintenance" lejon kryerjen e optimizimeve dhe operacioneve pĂ«rmbajtĂ«sore pĂ«r tĂ« mbajtur strukturĂ«n optimale tĂ« depozitĂ«s nĂ« sfond, pa bllokuar seancĂ«n interaktive â njĂ« herĂ« nĂ« orĂ« kryhet puna pĂ«r ngarkimin e parakohshĂ«m tĂ« objekteve tĂ« reja nga depozita e largĂ«t dhe pĂ«rditĂ«simin e skedarit me grafikĂ«n e komiteteve, ndĂ«rsa çdo natĂ« fillon procesi i paketimit tĂ« depozitĂ«s.
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r mbajtjen nĂ« disk tĂ« indeksit tĂ« kthyer (revindex) pĂ«r skedarĂ«t pack. TĂ« kujtojmĂ« se Git ruan tĂ« gjitha tĂ« dhĂ«nat si objekte, tĂ« cilat vendosen nĂ« skedarĂ« tĂ« veçantĂ«. PĂ«r tĂ« pĂ«rmirĂ«suar efikasitetin e punĂ«s me depo, objektet gjithashtu vendosen nĂ« skedarĂ« pack, ku informacioni paraqitet nĂ« formĂ«n e njĂ« rrjedhĂ«s objektesh qĂ« ndjekin njĂ«ra-tjetrĂ«n (njĂ« format i ngjashĂ«m pĂ«rdoret kur transferohen objekte me komandat git fetch dhe git push). PĂ«r çdo skedar pack krijohet njĂ« skedar indeksi (.idx), i cili lejon tĂ« pĂ«rcaktohet nĂ« mĂ«nyrĂ« shumĂ« tĂ« shpejtĂ« pozita nĂ« skedarin pack sipas identifikuesit tĂ« objektit, ku ruhet ky objekt. Indeksi i kthyer (.rev) i propozuar nĂ« Git 2.31 ka pĂ«r qĂ«llim optimizimin e procesit tĂ« pĂ«rcaktimit tĂ« identifikuesit tĂ« objektit sipas informacionit mbi vendosjen e objektit nĂ« skedarin pack.
Më parë, një transformim i tillë kryhej në flukso gjatë analizës së skedarëve pack dhe ruhej vetëm në memorie, gjë që nuk lejonte ripërdorimin e tillë të indekseve dhe detyronte të gjenerohej indeksi çdo herë. Operacioni i ndërtimit të indeksit përfshin ndërtimin e një array prej çiftave "objekt-pozit" dhe renditjen e tij sipas pozites, gjë që mund të marrë shumë kohë për skedarë pack të mëdhenj.
Për shembull, operacioni i tregimit të përmbajtjes së objekteve, në të cilin përdoret indeksi direkt, u krye 62 herë më shpejt se operacioni i shfaqjes së madhësisë së objekteve, për të cilin të dhënat e lidhjes së pozites me objektin nuk u indeksuan. Pas përdorimit të indeksit të kundërt, këto operacione filluan të kërkonin një kohë të ngjashme. Indekset e kundërt gjithashtu lejojnë përshpejtimin e operacioneve të dërgimit të objekteve gjatë kryerjes së komandave fetch dhe push përmes transferimit të drejtpërdrejtë të të dhënave tashmë të gatshme nga disku. Me default, indekset e kundërt nuk krijohen; për të gjeneruar ato, kërkohet aktivizimi i cilësimit "git config pack.writeReverseIndex true" me paketimin e mëpasshëm të depozitos me komandën "git repack -Ad".
- Janë shtuar optimizime të performancës, të bazuara në shfaqjen e formatit të skedarëve commit-graph, i cili përdoret për të optimizuar qasjen në informacionin e komiteteve, të dhënat e reja të numrit të gjeneratës së komitetit, të cilat mund të përdoren për të përshpejtuar operacione të tjera me komitetet.
- Janë zgjeruar mundësitë për të tejkaluar emrin e degës kryesore, e cila përdoret si default në depo të reja (konfigurimi init.defaultBranch). Kur i qaset depozita të jashtme, git përpiqet të nxjerrë degën që tregon HEAD, dmth. nëse depoja e jashtme server përdor degën «main» si default, operacioni «git clone» do të përpiqet të nxjerrë lokalish «main». Në Git 2.31, mbështetje për një nxjerrje të tillë tani është realizuar edhe për depo të zbrazëta. Për shembull, kur klononi lokalish një depo të re para se të shtoni patch-at e parë në të, kopja lokale tani do të përmbajë emrin e caktuar të degës kryesore si default. serveri Janë shtuar emri i degës kryesore si default.
- Te komanda «git rev-list» Ă«shtĂ« shtuar opsioni «âdisk-usage», i cili lejon tĂ« tregojĂ« njĂ« pĂ«rmbledhje tĂ« tĂ« dhĂ«nave mbi madhĂ«sinĂ« e objekteve.
- Në pritje të zëvendësimit të ardhshëm të backend-it për përfundimin e bashkimeve, është optimizuar ndjeshëm përcaktimi i rinovimeve.
- ĂshtĂ« ndĂ«rprerĂ« mbĂ«shtetje pĂ«r bibliotekĂ«n e vjetruar tĂ« shprehjeve tĂ« rregullta PCRE1.
- ĂshtĂ« ofruar mundĂ«sia pĂ«r tĂ« detyruar ndalimin e pĂ«rdorimit tĂ« lidhjeve tĂ« shkurtra, qĂ« vepron pavarĂ«sisht algoritmit tĂ« hash-it. Ndalimi aktivizohet duke i caktuar vlerĂ«n "no" parametrave core.abbrev.
- Në komandën "git rev-parse" është shtuar mundësia "--path-format=(absolute|relative)" për të përcaktuar qartë nëse do të dalin rrugët relative ose absolute.
- Në skriptet për plotësimin automatik të hyrjeve në Bash, është lehtësuar shtimi i rregullave të plotësimit për komandat nën "git".
- Në komandën "git bundle" është shtuar mundësia "--stdin" për të lexuar lidhjet nga kanali standard i hyrjes.
- Në komandën "git log" është shtuar një mundësi e re "--diff-merges=".
- Në komandën "git ls-files" është shtuar mundësia "--deduplicatecan" për të eliminuar kopjet gjatë daljes.
- JanĂ« shtuar maska tĂ« reja pĂ«r pĂ«rjashtimin e gamĂ«s sĂ« komiteteve â "^!" dhe "^-".
- Në komandën "git range-diff" janë shtuar mundësitë "--left-only" dhe "--right-only" për të treguar vetëm një anë të gamës së krahasuar.
- NĂ« komandat «git diff» dhe «git log» janĂ« shtuar opsionet «âskip-to=<path>» dhe «ârotate-to=<path>» pĂ«r tĂ« kaluar ose pĂ«r tĂ« shkuar nĂ« fund tĂ« rrugĂ«ve fillestare.
- NĂ« komandĂ«n «git difftool» Ă«shtĂ« shtuar opsioni «âskip-to=<path>» pĂ«r tĂ« vazhduar njĂ« sesion tĂ« ndĂ«rprerĂ« nga njĂ« rrugĂ« tĂ« caktuar.
- Kodi i sjelljes (Code-of-conduct), që përcakton parimet themelore për zgjidhjen e situatave konflikti midis zhvilluesve, është përditësuar në versionin 2.0 (më parë ishte përdorur versioni 1.4).
Burimi: opennet.ru
