Ăshte prezantuar versioni i sistemit tĂ« menaxhimit tĂ« kodit burimor Git 2.37. Git Ă«shtĂ« njĂ« nga sistemet mĂ« tĂ« njohura, tĂ« besueshme dhe me performancĂ« tĂ« lartĂ« pĂ«r menaxhimin e versioneve, qĂ« ofron mjete fleksibile pĂ«r zhvillim jo-linear, duke u bazuar nĂ« degĂ«zimin dhe bashkimin e degĂ«ve. PĂ«r tĂ« siguruar integritetin e historisĂ« dhe qĂ«ndrueshmĂ«ri ndaj ndryshimeve retroaktive, pĂ«rdoret hashing i implicit i tĂ«rĂ« historisĂ« paraprake nĂ« çdo commit, gjithashtu Ă«shtĂ« e mundur verifikimi me nĂ«nshkrime digjitale tĂ« zhvilluesve pĂ«r etiketat dhe commitĂ«t individualĂ«.
Në krahasim me versionin e kaluar, në këtë version janë pranuar 395 ndryshime, përgatitur nga 75 zhvillues, nga të cilët 20 e kanë marrë pjesë për herë të parë në zhvillim. Novitetet kryesore janë:
- Mekanizmi i indekseve të pjesshme (sparse index) është përgatitur për përdorim të gjerë, duke mbuluar vetëm një pjesë të depozitës. Indekset e pjesshme lejojnë rritjen e performancës dhe kursimin e hapësirës në depozitat ku kryhen operacione të klonimit të pjesshëm (sparse-checkout) ose punohet me një kopje të papërfunduar të depozitës. Në këtë version përfundoi puna për integrimin e indekseve të pjesshme në komandat "git show", "git sparse-checkout" dhe "git stash". Fitimi më i dukshëm në performancë nga përdorimi i indekseve të pjesshme vërehet në komandën "git stash", ku shpejtësia e ekzekutimit në disa raste është rritur me deri në 80%.
- ĂshtĂ« zbatuar njĂ« mekanizĂ«m i ri "cruft packs" pĂ«r paketimin e objekteve tĂ« paprekshme (unreachable), pĂ«r tĂ« cilat nuk ka referenca nĂ« depo (nuk referohen nga degĂ«t ose etiketat). Objektet e paprekshme hiqen nga mbledhĂ«si i plehrave, por deri nĂ« heqje mbeten pĂ«r njĂ« periudhĂ« tĂ« caktuar nĂ« depo pĂ«r tĂ« eliminuar gjendjet e garĂ«s. PĂ«r tĂ« ndjekur periudhĂ«n e objektĂ«ve tĂ« paprekshme Ă«shtĂ« e nevojshme lidhja e etiketave me kohĂ«n e modifikimit tĂ« kĂ«tyre objekteve, çka nuk lejon ruajtjen e tyre nĂ« njĂ« file pack, ku tĂ« gjitha objektet kanĂ« njĂ« kohĂ« tĂ« pĂ«rbashkĂ«t modifikimi. Ruajtja e mĂ«parshme e çdo objekti nĂ« njĂ« file tĂ« veçantĂ« shkaktonte probleme kur kishte numĂ«r tĂ« madh objektesh tĂ« paprekshme tĂ« reja, tĂ« cilat ende nuk pĂ«rmbushnin kushtet pĂ«r heqje. Mekanizmi i propozuar "cruft packs" lejon ruajtjen e tĂ« gjithĂ« objekteve tĂ« paprekshme nĂ« njĂ« file pack, ndĂ«rsa tĂ« dhĂ«nat mbi kohĂ«n e modifikimit tĂ« çdo objekti pasqyrohen nĂ« njĂ« tabelĂ« tĂ« veçantĂ«, e cila ruhet nĂ« njĂ« file me zgjerimin ".mtimes".
- Për Windows dhe macOS është realizuar një mekanizëm të integruar për ndjekjen e ndryshimeve në sistemin e skedarëve, duke lejuar të shmanget përshkrimi i tërë katalogut të punës gjatë kryerjes së operacioneve të tilla si "git status". Më parë, për ndjekjen e ndryshimeve përmes hook-ëve, mund të ishin lidhur mjete të jashtme për ndjekjen e ndryshimeve në FS, si Watchman, por kjo kërkonte instalimin e programeve shtesë dhe konfigurimin e tyre. Tani kjo funksionalitet është futur dhe mund të aktivizohet me komandën "git config core.fsmonitor true".
- NĂ« komandĂ«n "git sparse-checkout" Ă«shtĂ« shpallur e vjetruar mbĂ«shtetje pĂ«r modalitetin alternativ "âcone" tĂ« metodĂ«s sĂ« pĂ«rcaktimit tĂ« shablloneve pĂ«r klonimin e pjesshĂ«m, qĂ« lejon nĂ« pĂ«rcaktimin e pjesĂ«s sĂ« depozites qĂ« i nĂ«nshtrohet operacionit tĂ« klonimit pĂ«r tĂ« listuar skedarĂ« tĂ« veçantĂ« duke pĂ«rdorur sintaksĂ«n e "gitignore", qĂ« nuk lejon pĂ«rdorimin e indekseve tĂ« pjesshme pĂ«r optimizim.
- ĂshtĂ« rritur fleksibiliteti i konfigurimit tĂ« thirrjes fsync() pĂ«r shpĂ«rndarjen e ndryshimeve nĂ« disk. NĂ« parametrin "core.fsyncMethod" Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r strategjinĂ« e sinkronizimit "batch", e cila lejon pĂ«rshpejtimin e punĂ«s gjatĂ« shkrimit tĂ« numrit tĂ« madh tĂ« skedarĂ«ve tĂ« veçantĂ« duke akumuluar ndryshimet nĂ« memorie tĂ« pĂ«rkohshme, qĂ« shpĂ«rndahen me njĂ« thirrje fsync(). NjĂ« test i kryer, nĂ« tĂ« cilin u shtuan 500 skedarĂ« me komandĂ«n "git add", kur ishte aktivizuar modaliteti i ri, u realizua pĂ«r 0.15 sekonda, ndĂ«rsa pĂ«r thirrjen fsync() pĂ«r secilin skedare shkoi pĂ«r 1.88 sekonda, ndĂ«rsa pa pĂ«rdorimin e fsync - 0.06 sekonda.
- NĂ« komandat qĂ« kalojnĂ« nĂ«pĂ«r degĂ«, si "git log" dhe "git rev-list", Ă«shtĂ« shtuar opsioni "âsince-as-filter=X", i cili lejon pĂ«rjashtimin e informacionit mbi commitĂ«t, koha e krijimit tĂ« tĂ« cilĂ«ve Ă«shtĂ« mĂ« e vjetĂ«r se "X". NĂ« avancim tĂ« opsionit "âsince", komanda e re Ă«shtĂ« realizuar si njĂ« filtĂ«r, qĂ« nuk ndalon kalimin pas commit-it tĂ« parĂ«, mĂ« tĂ« vjetĂ«r se koha e caktuar.
- Në komandën "git remote", kur është caktuar flamuri "-v", është siguruar dalja e informacionit për klonët e pjesshëm të depozitës.
- Shto është shtuar konfigurimi «transfer.credentialsInUrl», i cili mund të marrë vlera «warn», «die» dhe «allow». Në rast se në parametrin «remote.<name>.url» jepen akreditimet në tekst të hapur, përpjekja për të realizuar operacionet «fetch» ose «push» do të përfundojë me një gabim, nëse konfigurimi «transfer.credentialsInUrl» ka vlerën «die», ose me një paralajmërim, nëse është vendosur vlera «warn».
- Për default, është aktivizuar një implementim i ri i modës interaktive të komandës «git add -i», e shkruar nga Perl në C.
Burimi: opennet.ru
