ĂshtĂ« paraqitur lĂ«shimi i sistemit tĂ« menaxhimit tĂ« burimeve tĂ« kodit Git 2.37. Git Ă«shtĂ« njĂ« nga sistemet mĂ« tĂ« njohura, tĂ« besueshme dhe me performancĂ« tĂ« lartĂ« pĂ«r menaxhimin e versioneve, duke ofruar mjete fleksibĂ«l pĂ«r zhvillimin jo-linear, tĂ« bazuara nĂ« degzim dhe bashkim tĂ« degĂ«ve. PĂ«r tĂ« siguruar integritetin e histori dhe qĂ«ndrueshmĂ«rinĂ« ndaj ndryshimeve "me pas", pĂ«rdoret hashingu implicit i gjithĂ« historisĂ« sĂ« mĂ«parshme nĂ« çdo commit, ndĂ«rsa Ă«shtĂ« e mundur tĂ« vĂ«rtetohen me nĂ«nshkrime digjitale tĂ« zhvilluesve tĂ« etiketimeve dhe commit-eve tĂ« veçanta.
Krahasuar me versionin e kaluar, në versionin e ri janë miratuar 395 ndryshime, të përgatitura me pjesëmarrjen e 75 zhvilluesve, nga të cilët 20 janë angazhuar për herë të parë në zhvillim. Risitë kryesore:
- Mekanizmi i indekseve të pjesshme (sparse index) është përgatitur për përdorim të gjerë, duke mbuluar vetëm një pjesë të repositories. Indekset e pjesshme lejojnë përmirësimin e performancës dhe kursimin e hapësirës në repositories ku kryhen operacione të klonimit të pjesshëm (sparse-checkout) ose punë bëhet me një kopje të paplotë të repositories. Në këtë lëshim, përfundimi i punës për integrimin e indekseve të pjesshme në komandat "git show", "git sparse-checkout" dhe "git stash" është realizuar. Fitimi më i dukshëm në performancë nga përdorimi i indekseve të pjesshme vërehet në komandën "git stash", shpejtësia e ekzekutimit të së cilës në disa situata është rritur me deri në 80%.
- Një mekanizëm i ri "cruft packs" është realizuar për paketimin e objekteve të paarritshme (unreachable), për të cilat në repository nuk ka referenca (nuk i referohen degët apo etiketat). Objektet e paarritshme hiqen nga shërbimi i mbetjeve, por derisa të hiqen, ato qëndrojnë për një kohë të caktuar në repository për të përjashtuar situatat e garës. Për të ndjekur periudhën e qëndrimit të objekteve të paarritshme, nevojitet lidhja e etiketave me kohën e modifikimit të këtyre objekteve, gjë që nuk lejon ruajtjen e tyre në një pack-file, ku të gjitha objektet kanë një kohë të përbashkët modifikimi. Ruajtja e çdo objekti në një skedar të veçantë më parë rezultoi në probleme kur kishte një numër të madh objektesh të freskëta të paarritshme, të cilat ende nuk e plotësonin kushtin për të qenë të fshin. Mekanizmi i propozuar "cruft packs" lejon ruajtjen e të gjitha objekteve të paarritshme në një pack-file, ndërsa të dhënat për kohën e modifikimit të çdo objekti pasqyrohen në një tabelë të veçantë, e ruajtur në një skedar me zgjatjen ".mtimes".
- Për Windows dhe macOS, është realizuar një mekanizëm të integruar për ndjekjen e ndryshimeve në sistemin e skedarëve, duke e bërë të mundur shmangien e skanimit të të gjithë katalogut të punës gjatë kryerjes së operacioneve si "git status". Më parë, për ndjekjen e ndryshimeve përmes hook-ëve mund të lidhen mjete të jashtme për ndjekjen e ndryshimeve në FS, si Watchman, por kjo kërkonte instalimin e programeve shtesë dhe konfigurimin. Tani funksionaliteti i përmendur është i integruar dhe mund të aktivizohet me komandën "git config core.fsmonitor true".
- NĂ« komandĂ«n "git sparse-checkout", Ă«shtĂ« shpallur e degraduar mbĂ«shtetje pĂ«r modin alternativ "âcone" tĂ« metodĂ«s sĂ« pĂ«rcaktimit tĂ« modeleve pĂ«r klonimin e pjesshĂ«m, i cili lejon qĂ« gjatĂ« pĂ«rcaktimit tĂ« pjesĂ«s sĂ« depozitĂ«s qĂ« rregullohet pĂ«r operacionin e klonimit tĂ« listohen skedarĂ«t e veçantĂ« duke pĂ«rdorur sintaksĂ«n " .gitignore", e cila nuk lejon pĂ«rdorimin e indekseve tĂ« pjesshme pĂ«r optimizim.
- ĂshtĂ« rritur fleksibiliteti i konfigurimit tĂ« thirrjes fsync() pĂ«r tĂ« shlyer ndryshimet nĂ« disk. NĂ« parametrin "core.fsyncMethod" Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r strategjinĂ« e sinkronizimit "batch", e cila lehtĂ«son punĂ«n gjatĂ« shkruarjes sĂ« njĂ« numri tĂ« madh skedarĂ«sh tĂ« veçantĂ« duke akumuluar ndryshimet nĂ« memorien pĂ«rmbysĂ«s, e cila shlyhet me njĂ« thirrje tĂ« vetme fsync(). Testi i kryer, ku me komandĂ«n "git add" u shtuan 500 skedarĂ«, u krye pĂ«r 0.15 sekonda me aktivizimin e modit tĂ« ri, ndĂ«rsa me thirrjen fsync() pĂ«r secilin skedar nevojitej 1.88 sekonda, dhe pa pĂ«rdorimin e fsync â 0.06 sekonda.
- NĂ« komandat pĂ«r kalimin e degĂ«ve, si "git log" dhe "git rev-list", Ă«shtĂ« shtuar opsioni "âsince-as-filter=X", i cili lejon filtrimin e informacionit mbi komitĂ«t, koha e krijimit tĂ« cilĂ«ve Ă«shtĂ« mĂ« e vjetĂ«r se "X". Ndryshe nga opsioni "âsince", komanda e re Ă«shtĂ« realizuar si njĂ« filtrues, pa ndaluar kalimin pas komitit tĂ« parĂ«, mĂ« tĂ« vjetĂ«r se koha e caktuar.
- Në komandën "git remote" me caktimin e flamurit "-v" është siguruar shfaqja e informacionit mbi klonimet e pjesshme të depozitës.
- ĂshtĂ« shtuar konfigurrimi "transfer.credentialsInUrl", i cili mund tĂ« pranojĂ« vlerat "warn", "die" dhe "allow". NĂ« rastin e caktimit nĂ« parametrin "remote..url" tĂ« kredencialeve nĂ« tekst tĂ« hapur, pĂ«rpjekja pĂ«r tĂ« kryer operacione "fetch" ose "push" do tĂ« pĂ«rfundojĂ« me njĂ« gabim, nĂ«se konfigurrimi "transfer.credentialsInUrl" merr vlerĂ«n "die", ose me njĂ« paralajmĂ«rim, nĂ«se Ă«shtĂ« caktuar vlera "warn".
- Mezi standardet, është aktivizuar një implementim i ri i modit interaktiv të komandës «git add -i», e shkruar nga Perl në C.
Burimi: opennet.ru
