Pas dy muajsh zhvillimi, është publikuar lëshimi i sistemit të distribuara të menaxhimit të teksteve të burimeve Git 2.39. Git është një nga sistemet më të njohura, të besueshme dhe me performancë të lartë për menaxhimin eVersioneve, duke ofruar mjete fleksibël për zhvillimin jo-linear, të bazuar në degëzim dhe bashkim të degëve. Për të garantuar integritetin e historisë dhe qëndrushmërinë ndaj ndryshimeve "pas datës", përdoret hash-im implicit i gjithë historisë së mëparshme në çdo commit, si dhe është e mundur të verifikohen me nënshkrime digjitale të zhvilluesve etiketat dhe commits e veçanta.
Krahasuar me lëshimin e kaluar, në versionin e ri janë përfshirë 483 ndryshime, të përgatitura me pjesëmarrjen e 86 zhvilluesve, nga të cilët 31 morën pjesë për herë të parë në zhvillim. Risi kryesore:
- Ekziston njĂ« opsion i ri "âgroup" pĂ«r komandĂ«n "git shortlog", e cila Ă«shtĂ« e destinuar pĂ«r tĂ« treguar pĂ«rmbledhje me statistika nga historia e ndryshimeve, e cila lejon grupimin arbitrar tĂ« commits nga fusha, qĂ« nuk kufizohen vetĂ«m nĂ« autorin ose committer-in. PĂ«r shembull, pĂ«r tĂ« treguar njĂ« listĂ« zhvilluesish me informacion mbi numrin e ndryshimeve, duke marrĂ« parasysh ndihmĂ«sit e pĂ«rmendur nĂ« fushĂ«n "Co-authored-by", mund tĂ« pĂ«rdoret komanda: git shortlog -ns âgroup=author âgroup=trailer:co-authored-by
Shkurtimi i rezultateve mund të agregohet duke përdorur specifikatorët e formatizimit dhe opsioni "--group" lejon që të krijoni raportet komplekse më lehtësisht dhe të shmangni ekzekutimin e komandave shtesë për renditje. Për shembull, për të krijuar një raport mbi numrin e komiteteve për versionin e caktuar në çdo muaj, mund të indikoni: git shortlog v2.38.0.. --date='format:%Y-%m' --group='' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Më parë, për të kryer një operacion të ngjashëm, do të ishte e nevojshme të ishin angazhuar ndihmësit sort dhe uniq: git log v2.38.0.. --date='format:%Y-%m' --format='' | sort | uniq -c
- Kanalet e mekanizmit 'cruft packs' janë zgjeruar, të destinuara për paketimin e objekteve të arritshme, për të cilat mungojnë lidhjet në depo (as përmes degëve as përmes etiketimeve). Objektet e arritshme fshihen nga mbledhësi i plehrave, por përpara se të fshihen qëndrojnë për një periudhë të caktuar në depo për të shmangur gjendjet e garës. Mekanizmi 'cruft packs' lejon ruajtjen e të gjitha objekteve të arritshme në një skedar pack, ndërsa të dhënat rreth kohës së modifikimit të çdo objekti pasqyrohen në një tabelë të veçantë, e ruajtur në një skedar të veçantë me zgjerimin '.mtimes', për t'u siguruar që ato të mos përfshihen me kohën e përgjithshme të ndryshimit.
Koha e qëndrimit të objekteve të arritshme në depo para se të fshihen realisht përcaktohet nga opsioni '--prune='. Megjithatë, ndonëse vonesa përpara fshirjes është një mënyrë mjaft efektive dhe praktike për të parandaluar dëmtimin e depozitës për shkak të gjendjeve të garës, ajo nuk është 100% e besueshme. Për të lehtësuar rikuperimin e depozitës së dëmtuar, në versionin e ri është ofruar mundësia e ruajtjes së objekteve të munguar, për të cilën në komandën 'git repack' është shtuar opsioni '--expire-to', i cili lejon përcaktimin e një skedari për krijimin e një kopje të jashtme të të gjitha objekteve të fshira. Për shembull, për të ruajtur në skedarin backup.git objektet e arritshme, të cilat nuk janë ndryshuar për 5 minuta të fundit, mund të përdorini komandën: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire-to=../backup.git
- Shpejtësia e kryerjes së operacionit 'git grep --cached' është rritur ndjeshëm (deri në 70%) kur kërkoni në zona ku aplikohet klonimi i pjesshëm (sparse-checkout) dhe për të cilat ekzistojnë indekse të pjesshme (sparse index). Më parë, kur ishte e specifikuar opsioni '--cached', fillimisht kërkohej në indeksin normal, dhe pastaj në ato të pjesshme, çka shkaktonte vonesa të ndjeshme kur kërkohej në depo të mëdha.
- Shpejtësia e kryerjes është përshpejtuar në server kontrollin e lidhshmërisë së objekteve të reja përpara se t'i vendosni në depo gjatë kryerjes së operacionit 'git push'. Falë kalimit në llogaritjen e kontrolleve vetëm për lidhjet e shpallura, në depozitën testuese me 7 milion lidhje, nga të cilat vetëm 3% janë përfshirë në operacionin push, optimizimet e bëra lejuan që koha e kontrollit të reduktohej 4.5 herë.
- Për të mbrojtur përballë mbushjeve të mundshme të numrave të plotë në kod, ekipi "git apply" ka kufizuar madhësinë maksimale të patch-eve të përpunuara. Në rast se madhësia e patch-it tejkalon 1 GB, tani do të shfaqet një gabim.
- Për të mbrojtur nga potencialet e dobësive, janë bërë ndryshime për të pastruar informacionet e tepërta nga titujt, të cilat jepen kur përdoret moduli h2h3 me opsionin GIT_TRACE_CURL=1 ose GIT_CURL_VERBOSE=1 së bashku me HTTP/2.
- Kur kryeni operacionin check out me një degë, e cila është një lidhje simbolike në një degë tjetër, komanda "git symbolic-ref HEAD" tani shfaq emrin e degës së qëllimit, në vend të emrit të lidhjes simbolike.
- Shtuar mbĂ«shtetje pĂ«r argumentin @{-1} nĂ« opsionin "âedit-description" ("git branch âedit-description @{-1}") pĂ«r tĂ« redaktuar pĂ«rshkrimin e degĂ«s sĂ« kaluar.
- Shtuar komanda "git merge-tree âstdin", e cila lejon kalimin e njĂ« liste parametrash pĂ«rmes rrjedhĂ«s standarde.
- Në sistemet e skedarëve të rrjetit, për default është çaktivizuar menaxherin fsmonitor, i cili ndjek ndryshimet në FS.
Burimi: opennet.ru
