Pas dy muajsh zhvillimi, lëshohet versioni i sistemit të shpërndarë të menaxhimit të kodit burimor Git 2.39. Git është një nga sistemet më të njohura, të besueshme dhe me performancë të lartë për menaxhimin e versioneve, duke ofruar mjete fleksibile për zhvillim jo-linjar, të bazuar në degëzim dhe bashkim të degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve 'retrospektivë', përdoret hashingu implicit i gjithë historisë përkatëse në çdo commit, si dhe verifikimi digjital nga nënshkrimet e zhvilluesve për etiketa dhe komitete të veçanta.
Krahasuar me versionin e kaluar, në këtë version janë pranuar 483 ndryshime, të përgatitura me pjesëmarrjen e 86 zhvilluesve, nga të cilët 31 janë angazhuar për herë të parë në zhvillim. Risi kryesore:
- Në komandën «git shortlog», e cila është menduar për të treguar përmbledhjet me statistikë nga historia e ndryshimeve, është shtuar opsioni «—group» për grupimin e lirshëm të komiteteve sipas fushave, pa u kufizuar në autor ose komitues. Për shembull, për të treguar një listë të zhvilluesve me informacion mbi numrin e ndryshimeve, duke përfshirë ndihmësit e përmendur në fushën «Co-authored-by», mund të përdorni komandën: git shortlog -ns —group=author —group=trailer:co-authored-by
Вывод shortlog можно агрегировать при помощи спецификаторов форматирования и опция «—group» позволяет существенно упростить создание сложных отчётов и избавиться от выполнении дополнительных команд сортировки. Например, для создания отчёта с информацией о том, сколько коммитов для заданного релиза было принято в каждом месяце, можно указать: git shortlog v2.38.0.. —date=’format:%Y-%m’ —group=’%cd’ -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Раньше для выполнения аналогичной операции потребовалось бы привлечение утилит sort и uniq: git log v2.38.0.. —date=’format:%Y-%m’ —format=’%cd’ | sort | uniq -c
- Janë zgjeruar mundësitë e mekanizmit "cruft packs", i cili është i destinuar për paketimin e objekteve të panjohura, për të cilat nuk ka referenca në depo (nuk referohen nga degët apo etiketat). Objektet e panjohura fshihen nga mbledhësi i mbeturinave, por deri në fshirje mbeten për një kohë të caktuar në depo për të përjashtuar gjendjet e garës. Mekanizmi "cruft packs" lejon që të gjitha objektet e panjohura të ruhen në një skedar pack, ndërsa të dhënat mbi kohën e modifikimit të çdo objekti reflektohen në një tavël të veçantë, e cila ruhet në një skedar të veçantë me zgjerimin ".mtimes", që të mos ndërhyjnë me kohën e përgjithshme të ndryshimit.
Koha e qëndrimit të objekteve të pamundura në depo para fshirjes efektive përcaktohet nga opsioni "—prune=". Megjithatë, ndonëse vonesa para fshirjes është një mënyrë mjaft efektive dhe praktike për të parandaluar dëmtimin e depoit për shkak të gjendjes së garës, ajo nuk është 100% e sigurt. Për të lehtësuar rikuperimin e depozitës së dëmtuar, në versionin e ri është ofruar mundësia për të ruajtur objektet e munguar, për këtë arsye 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 që nuk janë ndryshuar në pesë minutat e fundit, mund të përdoret komanda: git repack —cruft —cruft-expiration=5.minutes.ago -d —expire-to=../backup.git
- Shpejtësia e ekzekutimit të operacionit «git grep —cached» është rritur ndjeshëm (deri në 70%) kur kërkohet në zona ku aplikohet klonimi i pjesshëm (sparse-checkout) dhe ku ka indekse të pjesshme (sparse index). Më parë, kur ishte e vendosur opsioni «—cached», kërkimi bëhej fillimisht në indeksin normal dhe më pas në ato të pjesshme, gjë që shkaktonte vonesa të ndjeshme në kërkime në depo të mëdha.
- Kërkesa e re është përshpejtuar në serveri kontrollin e lidhshmërisë së objekteve të reja para se të vendosen në depo gjatë ekzekutimit të operacionit «git push». Falë kalimit në regjistrimin vetëm të lidhjeve të shpallura, në një depo testuese me 7 milion lidhje, nga të cilat vetëm 3% mbulohen nga operacioni push, optimizimet e bërë lejuan të reduktohet koha e kontrollit me 4.5 herë.
- Për të mbrojtur nga potencialet e mbushjes së plotë të numrave në kod, komandës «git apply» i është vendosur një kufi për madhësinë maksimale të patcheve të përpunuara. Në rastin kur madhësia e patch-it tejkalon 1 GB, tani do të shfaqet një gabim.
- Për të mbrojtur nga vulnerabilitetet e mundshme, janë bërë ndryshime për pastrimin e informacionit të panevojshëm nga titujt që shfaqen kur përdoret moduli h2h3 me opsionin GIT_TRACE_CURL=1 ose GIT_CURL_VERBOSE=1 së bashku me HTTP/2.
- Kur ekzekutohet operacioni check out me një degë që është një lidhje simbolike në një degë tjetër, komanda "git symbolic-ref HEAD" tani jep emrin e degës së synuar, jo emrin e 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", duke lejuar kalimin e listës së parametrave përmes rrjedhës standarde të hyrjes.
- Në sistemet e skedarëve në rrjet, përpunuesi fsmonitor, që ndjek ndryshimet në FSH, është çaktivizuar si parazgjedhje.
Burimi: opennet.ru
