Pas tre muaj zhvillimi, është publikuar versioni i sistemit të shpërndarë të menaxhimit të kodit burimor Git 2.43. 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 zhvillimin jo-linear, të bazuara në shpërndarje dhe për bashkimin e degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve "me kohë pas", përdoret hashingu i implicit i gjithë historisë së mëparshme në çdo commit, gjithashtu është e mundur verifikimi me nënshkrime digjitale të etiketimeve dhe commit-eve të veçanta.
Në krahasim me versionin e kaluar, në versionin e ri janë pranuar 464 ndryshime, të përgatitura me pjesëmarrjen e 80 zhvilluesve, nga të cilët 17 kanë marrë pjesë për herë të parë. Risitë kryesore:
- Në komandën "git repack" janë shtuar opsionet "—filter" dhe "—filter-to", të cilat lejojnë ripaketimin e depozitës duke marrë parasysh një filtër objektesh të caktuar, dhe sipas nevojës, të zhvendosen në një vend të veçantë objektet që nuk përputhen me filtrin e caktuar. Opsionet mund të përdoren për të ndarë depozitën sipas kritereve të caktuara (për shembull, për të hequr objektet e padëshiruara ose shumë të mëdha), duke ruajtur mundësinë e qasjes në të gjitha pjesët përmes klonimit të pjesshëm. Për shembull, për të lënë në depozitë blobet, me madhësi më pak se 1 MB, dhe duke transferuar objekte të tjera të mëdha në një depo të veçantë, mund të ekzekutoni: $ git init —bare ../backup.git $ git repack -ad —filter='blob:limit=1m' \ —filter-to=../backup.git/objects/pack/pack
Inicimi i depozitës përmes klonimit të pjesshëm lejon që të punoni me një kopje të pa plotë të depozitës, duke trajtuar saktësisht referencat ndaj objekteve të mungueshme (kur kërkohen objekte të mungueshme, ato do të ngarkohen në fluska sipas nevojës).
- Shtuar mundësinë e punës me disa skedarë pack me informacion mbi objektet e paarritshme ("cruft packs"), për të cilat në depozita nuk ka referenca (nuk referohen nga degët ose etiketat). Me ndihmën e opsionit të ri "git repack —max-cruft-size" mund të përcaktoni madhësinë maksimale të një skedari pack dhe të arrini ndarjen e bazës së objekteve të paarritshme në një seri skedarësh pack të vogla. Përdorimi i disa skedarëve pack të vegjël në vend të një të madhë lejon të reduktohen në mënyrë të konsiderueshme operacionet e hyrjes/daljes gjatë ripaketimit të depozitave me numër të madh objektesh te paarritshme, sepse për çdo operacion ripaketimi nuk do të jetë e nevojshme të ri-shkruani të dhënat e gjitha.
- Shtuar njohjen e përpjekjeve për të kryer anulimin e dyfishuar të komiteteve përmes "git revert" dhe mbajtjen e kësaj në konsideratë gjatë formimit të mesazhit të anulimit (nëse bëhet një "git revert" për herë të dytë, në vend të "Revert: Revert: fix bug" do të shkruhet "Reapply fix bug", dhe nëse anullohet ndryshimi për herë të tretë — "Revert Reapply fix bug"). $ git revert —no-edit HEAD >/dev/null $ git revert —no-edit HEAD >/dev/null $ git log —oneline a300922 (HEAD -> main) Reapply "fix bug" 0050730 Revert "fix bug" b290810 fix bug
- Lejohet ndarja e opsioneve "—rfc" dhe "—subject-prefix". Për shembull, për të formuar një mesazh me prefiksin "[RFC PATCH bpf-next]" në temën e mesazhit mund të specifikoni: $ git format-patch —subject-prefix="PATCH bpf-next" —rfc
- Në komandën "git log" është lejuar specifikimi i shenjës "%(decorate)" për të treguar emrat e degëve të lidhura duke përcaktuar formatin me opsionin "—format", për shembull: $ git log —format='"%cr%(decorate) (%h) %s' 3 days ago (HEAD -> master, origin/master, origin/HEAD) (e0939bec27) RelNotes: minor wording fixes in 2.43.0 release notes 7 days ago (tag: v2.43.0-rc1) (dadef801b3) Git 2.43-rc1 7 days ago (8ed4eb7538) Merge branch 'tb/rev-list-unpacked-fix'
- Në "git for-each-ref" dhe komandat e ngjashme është shtuar mundësia e aplikimit të rregullave .mailmap për specifikatorët e formatit të caktuar përmes opsionit "—format", si "%(authorname)" dhe "%(committeremail)".
Burimi: opennet.ru
