Lëshimi i sistemit të shpërndarë të menaxhimit të kodit burimor Git 2.48 është publikuar. Git ofron performancë të lartë dhe siguron mjete për zhvillim të jo-linearit, të bazuar në ndarjen dhe bashkimin e degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve 'me pas', përdoren hash-im të fshehtë të gjithë historisë së kaluar në çdo commit, si dhe nënshkrime digjitale nga zhvilluesit për etiketa dhe commit-e të veçanta. Kodi Git shpërndahet nën licencën GPLv2+.
Krahasuar me lëshimin e kaluar, versioni i ri pranon 605 ndryshime, të përgatitura me pjesëmarrjen e 93 zhvilluesve, nga të cilët 35 marrin pjesë për herë të parë në zhvillim. Ndryshimet kryesore janë:
- E mundësuar ndërtimi me sistemin e ndërtimit Meson, përveç GNU Make dhe CMake. Tani për ndërtimin e Git-it, mund të përdoret komandë 'meson setup build && ninja -C build'. Vërehet se Makefile që përdoret me GNU Make është rritur në 3887 rreshta dhe nuk është aq i thjeshtë sa do të dëshirohej. Mjetet e Meson e përmirësojnë punën me sistemin e ndërtimit, janë të përshtatshme për ndërtim multi-platformë dhe e bëjnë ndërtimin më të aksesueshëm për fillestarët ose zhvilluesit pa përvojë me mjetin Make. Nuk është planifikuar të ndërpritet mbështetje për Make dhe CMake në të ardhmen e afërt.
- Shtuar opsionet e ndërtimit që lejojnë përdorimin e zbatimeve alternative të hash SHA-1 për llogaritjen e kontroll-summave që përdoren për verifikimin e integritetit të blloqeve të dhënash në skedarët pack. Performanca e llogaritjes së kontroll-summave është shumë e rëndësishme, për shembull, rreth 78% e kohës së procesorit shpenzohet për llogaritjen e tyre kur klonohet një depo me bërthamën Linux. Zbatimi i përdorur si parazgjedhje përfshin kontrolle të shtesave për kolizione dhe mbrojtje nga sulmet ndaj SHA-1, si SHAttered dhe Shambles. Një mbrojtje e tillë, e cila konsumon burime shtesë, ka kuptim vetëm kur përdoret SHA-1 për qëllime kriptografike dhe është e panevojshme për verifikimin e integritetit të të dhënave indeksuese.
Për ndërtimin e Git me një zbatim më të shpejtë të SHA-1, i papërshtatshëm për kriptosistemit, ofrohet një seri opsionesh *_UNSAFE, si 'OPENSSL_SHA1_UNSAFE'. Në GitHub, ndërtimi me SHA-1 të thjeshtuar e ndihmoi të rritet performanca e operacioneve të nxjerrjes dhe klonimit të dhënave me 10-13%.
- Shtuar mundĂ«sia e pĂ«rdorimit tĂ« opsionit 'âremerge-diff' nĂ« komandĂ«n 'range-diff', i cili lejon shfaqjen e diferencave midis rezultatit tĂ« pĂ«rgjithshĂ«m tĂ« bashkimit dhe tĂ« dhĂ«nave aktuale qĂ« paraqiten nĂ« commit pas pĂ«rpunimit tĂ« komandĂ«s 'merge'. Kur pĂ«rdoret opsioni 'âremerge-diff', diferencat mes zgjidhjeve tĂ« konflikteve nuk ndahen pĂ«r çdo degĂ« prind, por shfaqen diferencat e pĂ«rgjithshme midis skedarit qĂ« ka konflikte bashkimi dhe skedarit qĂ« ka zgjidhur konfliktet. NĂ« kontekstin e komandĂ«s 'range-diff', opsioni i ri mund tĂ« jetĂ« i dobishĂ«m pĂ«r tĂ« krahasuar grupe commit-esh pas zhvendosjes sĂ« rendit tĂ« commit-eve me komandĂ«n 'rebase' me opsionin 'ârebase-merges'.
- Shtuar mundësia e ekzekutimit të grupeve të testeve të Git me përfshirjen e modit për identifikimin e rrjedhjeve të memories. Pasi që Git ofron mjete që përfundojnë punën pas përfundimit të funksionit të thirrur, rrjedhjet e memories më parë nuk konsideroheshin një problem të madh. Nevoja për të eliminuar plotësisht rrjedhjet e memories është bërë e rëndësishme pas fillimit të punës për aktivitete të veçanta në një bibliotekë të ndarë, e cila mund të përdoret në procese që punojnë për një kohë të gjatë.
- Ka filluar formimi i listës së mënyrave dhe mundësive të vjetra, mbështetjen e të cilave planifikohet të ndalet në të ardhmen. Pritet që heqja e funksionaliteteve të vjetruara të ndodhi në lëshimin e Git 3.0, i cili do të përmbajë ndryshime që shkelin përputhshmërinë mbrapa.
- Ka vazhduar optimizimi i funksionit 'git for-each-ref', qĂ« kĂ«rkon njĂ« listĂ« referencash nĂ« depo. Optimizimi, qĂ« bashkon pĂ«rpunuesit pĂ«r filtrimin e referencave dhe formatimin e daljes, tani zbatohet jo vetĂ«m pĂ«r daljen e pa renditur, por edhe kur tregohet opsioni 'âsort'.
- PĂ«rmirĂ«suar zbatimi i backend-it 'reftable' me ruajtje bllokuese pĂ«r ruajtjen efikase tĂ« referencave tĂ« degĂ«ve dhe etiketeve nĂ« depo. Reftable lejon pĂ«rshpejtimin e kĂ«rkimeve, leximin dhe shkrimin nĂ« depo me numĂ«r shumĂ« tĂ« madh referencash. NĂ« versionin e ri Ă«shtĂ« ndĂ«rprerĂ« pĂ«rdorimi i disa API-ve ndihmĂ«se pĂ«r tĂ« eklipsuar bibliotekĂ«n libgit nga varĂ«sitĂ« ndĂ«rtuese. ĂshtĂ« zbatuar pĂ«rpunimi adaptiv i gabimeve, tĂ« kthyera nga funksionet e alokimit tĂ« memories (mungesa e memories tani nuk shkakton ndĂ«rprerjen e punĂ«s). Operacionet e ndĂ«rtimit tĂ« referencave janĂ« pĂ«rshpejtuar dhe konsumi i memories Ă«shtĂ« reduktuar.
- Në zbatimin e klonimit të pjesshëm, u zgjidhën problemet që shkaktonin ciklim dhe dëmtimin e repo-it pas ekzekutimit të komandës "git gc".
- Kur ekzekutohet komanda "git fetch ", në rast se "refs/remotes//HEAD" mungon në sistemin lokal dhe ekziston në anën tjetër një degë që përcakton HEAD, "refs/remotes//HEAD" tani ridrejtohet në këtë degë. Për menaxhimin e sinkronizimit të "refs/remotes//HEAD" me vlerën e HEAD në anën tjetër të lidhjes, është shtuar konfigurimi remote..followRemoteHEAD.
- Shtuar konfigurimi "remote..serverOption" i ngjashĂ«m me opsionin e linjĂ«s sĂ« komandĂ«s "âserverOption=".
- Në komandën "git rebase --rebase-merges" është siguruar përdorimi i emrave të degëve si etiketa sa më shumë të jetë e mundur.
- NĂ« komandat âgit notes addâ dhe âgit notes appendâ Ă«shtĂ« shtuar flag â-eâ, qĂ« hap shĂ«nimin nĂ« njĂ« redaktues tĂ« jashtĂ«m teksti tĂ« specifikuar pĂ«rmes variablĂ«s sĂ« mjedisit GIT_EDITOR.
- Përmirësuar kompatibiliteti me GCC 15 dhe standardin C23.
- Ndërprerë mbështetje për versionet e vjetra të libcURL dhe Perl.
Burimi: opennet.ru
