Versioni 2.31 e sistemit të shpërndarë të menaxhimit të kodit burimor Git është tani në dispozicion. Git është një nga sistemet më popullore, të besueshme dhe me performancë të lartë për menaxhimin e versioneve, duke ofruar mjete fleksibile për zhvillimin jo linear që janë të bazuara në degëzim dhe bashkim të degëve. Për të siguruar integritetin e historisë dhe qëndrushmërinë ndaj ndryshimeve "me prapavijë", përdoret hash-i implicit i gjithë historisë së mëparshme në çdo komitim, gjithashtu është e mundur të vërtetohet me nënshkrime digjitale nga zhvilluesit e etiketave dhe komitimeve të veçanta.
Në krahasim me versionin e kaluar, në këtë version janë pranuar 679 ndryshime, të përgatitura me pjesëmarrjen e 85 zhvilluesve, nga të cilët 23 morën pjesë për herë të parë. Novitetet kryesore janë:
- ĂshtĂ« shtuar komanda "git maintenance", e cila lejon kryerjen e punĂ«ve periodike nĂ« sisteme qĂ« nuk mbĂ«shtesin cron. PĂ«r shembull, me anĂ« tĂ« kĂ«saj komande tĂ« re, mund tĂ« organizohet njĂ« lançim periodik i procesit tĂ« paketimit tĂ« depozitĂ«s, nĂ« mĂ«nyrĂ« qĂ« tĂ« mos presim pĂ«rfundimin e bllokimit tĂ« depozites gjatĂ« kryerjes automatikisht tĂ« paketimit gjatĂ« ekzekutimit tĂ« komandeve tĂ« ndryshme. Komanda "git maintenance" lejon optimizimin dhe operacionet e mbajtjes sĂ« strukturĂ«s optimale tĂ« depozitĂ«s nĂ« sfond, pa bllokuar seancĂ«n interaktive â çdo orĂ« kryhet njĂ« punĂ« pĂ«r ngarkimin paraprak tĂ« objekteve tĂ« reja nga depozita e largĂ«t dhe pĂ«rmirĂ«simin e skedarit me grafikun e komitimeve, dhe çdo natĂ« fillohet procesi i paketimit tĂ« depozitĂ«s.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r mbajtjen nĂ« disk tĂ« indeksit tĂ« pĂ«rmbysur (revindex) pĂ«r skedarĂ«t pack. TĂ« kujtojmĂ« se Git ruan tĂ« gjitha tĂ« dhĂ«nat nĂ« formĂ«n e objekteve, tĂ« cilat vendosen nĂ« skedarĂ« tĂ« veçantĂ«. PĂ«r tĂ« rritur efikasitetin e punĂ«s me depozitĂ«n, objekteve u jepet gjithashtu pĂ«rmbajtja nĂ« skedarĂ« pack, nĂ« tĂ« cilat informacioni paraqitet nĂ« formĂ«n e njĂ« rrjedhjeje tĂ« objekteve qĂ« ndjekin njĂ«ra-tjetrĂ«n (njĂ« format i ngjashĂ«m pĂ«rdoret gjatĂ« transferimit tĂ« objekteve me komandat git fetch dhe git push). PĂ«r çdo skedar pack krijohet njĂ« skedari indekse (.idx), qĂ« lejon qĂ« me identifikuesin e objektit tĂ« pĂ«rcaktohet shumĂ« shpejt offseti nĂ« skedarin pack, ku ruhet ky objekt. Indeksi i pĂ«rmbysur (.rev) i propozuar nĂ« Git 2.31 ka pĂ«r qĂ«llim optimizimin e procesit tĂ« pĂ«rcaktimit tĂ« identifikuesit tĂ« objektit pĂ«rmes informacionit mbi vendosjen e objektit nĂ« skedarin pack.
Më parë, kjo transformim kryhej në kohë reale gjatë analizës së skedarit pack dhe ruhej vetëm në memorie, e cila nuk lejonte ripërdorimin e tillë të indekseve dhe detyronte gjenerimin e indekseve çdo herë. Operacioni i ndërtimit të indeksit përkthehet në ndërtimin e një vargu nga çiftet "objekt-pjesë" dhe renditjen e tij sipas pjesës, që mund të marrë shumë kohë për skedarë të mëdhenj pack.
Për shembull, operacioni i daljes së përmbajtjes së objekteve, ku përdoret indeksi i drejtpërdrejtë, u krye 62 herë më shpejt se operacioni i shfaqjes së madhësisë së objekteve, për të cilat të dhënat për lidhjen e pjesës me objektin nuk ishin indeksuar. Pas përdorimit të indeksit të kundërt, këto operacione filluan të kërkojnë një kohë të ngjashme. Indeksat e kundërt gjithashtu lejojnë të përshpejtojnë operacionet e dërgimit të objekteve gjatë ekzekutimit të komandave fetch dhe push përmes transmetimit të drejtpërdrejtë të të dhënave të gatshme nga disku. Në mënyrë të paracaktuar, indeksat e kundërt nuk krijohen, për gjenerimin e tyre kërkohet që të aktivizohet cilësimi "git config pack.writeReverseIndex true" me përcjelljen e paketimit të depozitës me komandën "git repack -Ad".
- Janë shtuar optimizime të performancës, të bazuara në shfaqjen e formatit të skedarit commit-graph, i cili përdoret për optimizimin e qasjes në informacionin mbi komitetet, të dhënave të reja për numrin e gjeneratës së komitetit, të cilat mund të përdoren për të përshpejtuar operacione të tjera me komitetet.
- Janë përmirësuar mundësitë për të tejkaluar emrin e degës kryesore, e cila përdoret si parazgjedhje në depozitat e reja (cilësimi init.defaultBranch). Kur aksesoni depozita të jashtme, git përpiqet të nxjerrë degën në të cilën tregon HEAD, dmth. nëse e jashtmja server përdor degën "main" si parazgjedhje, atëherë operacioni "git clone" do të përpiqet të nxjerrë "main" lokalish. Në Git 2.31, mbështetje për nxjerrjen e tillë tani është realizuar edhe për depozita të bosh. Për shembull, gjatë klonimit lokal të një depozitë të re para se të shtoni patches të parë në të, kopja lokale tani do të përmbajë emrin e jashtëm server të degës kryesore si parazgjedhje.
- KomandĂ«s "git rev-list" i Ă«shtĂ« shtuar opsioni "âdisk-usage", i cili lejon tĂ« shfaqen tĂ« dhĂ«nat pĂ«rmbledhĂ«se mbi madhĂ«sinĂ« e objekteve.
- Duke pritur për ndërrimin e ardhshëm të backend-it për realizimin e bashkimeve, është optimizuar ndjeshëm përcaktimi i rinovimeve.
- Mbështetje për bibliotekën e vjetruar të shprehjeve të rregullta PCRE1 është ndërprerë.
- Ofrimi i mundësisë për ndalimin e detyrueshëm të përdorimit të lidhjeve të shkurtra, që vepron pavarësisht nga algoritmi i hash-it. Ndalimi aktivizohet duke i caktuar vlerën "no" parametrin core.abbrev.
- Opsioni "âpath-format=(absolute|relative)" Ă«shtĂ« shtuar nĂ« komandĂ«n "git rev-parse" pĂ«r tĂ« pĂ«rcaktuar qartĂ« daljen e rrugĂ«ve relative ose absolute.
- Në skriptet për autokcomplete në Bash, është lehtësuar shtimi i rregullave të plotësimit për komandat e veta "git".
- Opsioni "âstdin" Ă«shtĂ« shtuar nĂ« komandĂ«n "git bundle" pĂ«r tĂ« lexuar lidhjet nga kanali standard i hyrjes.
- NjĂ« opsion i ri "âdiff-merges=" Ă«shtĂ« shtuar nĂ« komandĂ«n "git log".
- Opsioni "âdeduplicatecan" Ă«shtĂ« shtuar nĂ« komandĂ«n "git ls-files" pĂ«r tĂ« eliminuar dublikatet gjatĂ« daljes.
- Maska tĂ« reja pĂ«r pĂ«rjashtimin e intervaleve tĂ« commit-Ă«ve janĂ« shtuar â "^!" dhe "^-".
- Opsionet "âleft-only" dhe "âright-only" janĂ« shtuar nĂ« komandĂ«n "git range-diff" pĂ«r tĂ« treguar vetĂ«m njĂ« anĂ« tĂ« intervalit tĂ« krahasimit.
- Opsionet "âskip-to=" dhe "ârotate-to=" janĂ« shtuar nĂ« komandat "git diff" dhe "git log" pĂ«r tĂ« anashkaluar ose lĂ«vizur nĂ« fund tĂ« rrugĂ«ve fillestare.
- Opsioni "âskip-to=" Ă«shtĂ« shtuar nĂ« komandĂ«n "git difftool" pĂ«r tĂ« rifilluar seancĂ«n e ndĂ«rprerĂ« nga njĂ« rrugĂ« tĂ« caktuar.
- Kodexi i sjelljes (Code-of-conduct), që përcakton parimet kryesore të zgjidhjes së situatave konfliktuale mes zhvilluesve, është azhurnuar në versionin 2.0 (më parë është përdorur versioni 1.4).
Burimi: opennet.ru
