U prezantua versioni i sistemit tĂ« menaxhimit tĂ« burimeve tĂ« shpĂ«rndara Git 2.54. Git ofron performancĂ« tĂ« lartĂ« dhe ofron mjete pĂ«r zhvillim jo-linear, tĂ« bazuara nĂ« degĂ«zim dhe bashkim tĂ« degeve. PĂ«r tĂ« siguruar integritetin e historisĂ« dhe qĂ«ndrueshmĂ«rinĂ« ndaj ndryshimeve âme retrospektivĂ«â, pĂ«rdoret njĂ« hash implicit i tĂ« gjithĂ« historisĂ« sĂ« mĂ«parshme nĂ« çdo commit si dhe autentikimi me nĂ«nshkrime digjitale tĂ« zhvilluesve pĂ«r etiketa dhe commits tĂ« caktuara. Kodi Git shpĂ«rndahet nĂ«n licencĂ«n GPLv2+.
Në krahasim me versionin e kaluar, në këtë version janë pranuar 770 ndryshime, përgatitur me pjesëmarrjen e 137 zhvilluesve (66 prej të cilëve që ishin të rinj në zhvillimin e Git). Inovacionet kryesore janë:
- ĂshtĂ« realizuar komanda «git history», qĂ« ofron mundĂ«si eksperimentale pĂ«r ridĂ«shirimin e historisĂ« sĂ« ndryshimeve, mĂ« tĂ« thjeshta dhe mĂ« tĂ« sigurta pĂ«r t'u pĂ«rdorur sesa rifillimi i commits me komandĂ«n «git rebase». Ofrohen dy operacione:
- «git history reword <commit>» për të rishkruar mesazhin në komitin e specifikuar pa ndryshuar punën dhe indeksin (përveç shënimeve, pjesa tjetër mbetet e paprekur). Për shembull, për të korrigjuar një gabim shkrimi.
- «git history split <commit>» për ndarjen interaktive të komitit të specifikuar në dy komite të ndryshme me lëvizjen e pjesëve të zgjedhura nga komiti origjinal në një komit të shtesë.
Në edicionet e ardhshme pritet të shtohen komandat e tjera: «git history fixup» për të rregulluar komitin, «git history drop» për të fshirë komitin, «git history reorder» për të ndryshuar rendin e komiteve dhe «git history squash» për të bashkuar komitet.
- ĂshtĂ« realizuar njĂ« metodĂ« e re pĂ«r pĂ«rcaktimin e trajtuesve (hook) nĂ« skedarĂ«t e konfigurimit. NĂ« vend qĂ« tĂ« vendosen skenare me trajtues nĂ« katalogun «.git/hooks» nĂ« çdo depo, komandat pĂ«r thirrjen e trajtuesve tani mund tĂ« vendosen drejtpĂ«rdrejt nĂ« skedarĂ«t e konfigurimit. CilĂ«simet mund tĂ« lidhen me depo ose tĂ« specifikohen nĂ« skedarĂ«t e konfigurimit, qĂ« veprojnĂ« pĂ«r tĂ« gjitha depo (/etc/gitconfig) ose depo tĂ« pĂ«rdoruesit (~/.gitconfig). ĂshtĂ« e mundur tĂ« lidhen disa trajtues me njĂ« ngjarje tĂ« vetme. SkenarĂ«t nga «.git/hooks» vazhdojnĂ« tĂ« thirren, por ekzekutohen pas trajtuesve nga skedarĂ«t e konfigurimit. PĂ«r tĂ« parĂ« listĂ«n e trajtuesve duhet tĂ« pĂ«rdoret komanda «git hook list», dhe pĂ«r tĂ« ndalur pĂ«rzgjedhĂ«sin e thirrjes sĂ« trajtuesve â cilĂ«simi «hook.<name>.enabled = false». [hook «linter»] event = pre-commit command = ~/bin/linter âcpp20 [hook «no-leaks»] event = pre-commit command = ~/bin/leak-detector $ git hook list pre-commit global linter ~/bin/linter âcpp20 local no-leaks ~/bin/leak-detector
- Në ekipin «git maintenance», strategjia «geometric» është aktivizuar si parazgjedhje («git config set maintenance.strategy geometric»), duke lejuar reduktimin e kohës së mirëmbajtjes për depozitë të mëdha monorepo. Në krahasim me strategjinë e mëparshme, e cila përdor logjikën si në komandën «git gc», strategjia e re shmang rikombinimin e të gjitha objekteve dhe përjashton operacionet e tepërta që kërkojnë burime, siç është bashkimi i të gjitha skedarëve të paketave (kur është e mundur, bashkimi bëhet në pjesë dhe pa pastrimin e objekteve të fshira).
- Baza e të dhënave të objekteve (ODB) dhe API-të përkatëse janë të riparuara në një arkitekturë të re, të bazuar në përdorimin e backend-eve të lidhura. Ristrukturimi i kryer abstaron formatin e ruajtjes së objekteve dhe do të lejojë më tej realizimin e mundësive të tilla si backend dhe formate alternative të objekteve, për shembull, për ruajtjen më efikase të skedarëve të mëdhenj binarë ose për optimizimin e funksionimit të hosteve të mëdhenj git.
- Në komandën «git repo structure», e cila jep informacione për strukturën e depozitës, është e siguruar që të shfaqet jo vetëm shuma totale, por edhe mostra më të mëdha të çdo lloji, çka lejon vlerësimin e madhësisë pa përdorur një utilitar të jashtëm si git-sizer. $ git repo structure ⊠| * Objekti më i madh | | | * Komitetet | | | * Madhësia maksimale [1] | 17.23 KiB | | * Prindërit maksimale [2] | 10 | | * Pemët | | | * Madhësia maksimale [3] | 58.85 KiB | | * Shënimet maksimale [4] | 1.18 k | | * Blobet | | | * Madhësia maksimale [5] | 1019.51 KiB | | * Etiketat | | | * Madhësia maksimale [6] | 7.13 KiB |
- NĂ« komandĂ«n «git replay», e cila pĂ«rdoret si njĂ« zĂ«vendĂ«sim pĂ«r «git rebase» pĂ«r tĂ« rinovuar historinĂ« nĂ« serveri pa krijimin e njĂ« drejtorie pune, Ă«shtĂ« pĂ«rfshirĂ« nĂ« mĂ«nyrĂ« qĂ« tĂ« azhurnohen referencat nĂ« mĂ«nyrĂ« atomike (nĂ« vend tĂ« shfaqjes sĂ« listĂ«s sĂ« komandave update-ref pĂ«r ekzekutimin manual), Ă«shtĂ« implementuar opsioni «ârevert» pĂ«r tĂ« anuluar ndryshimet nga njĂ« seri komitetesh, Ă«shtĂ« siguruar qĂ« tĂ« hidheshin komitetet bosh tĂ« hasiljeve dhe Ă«shtĂ« bĂ«rĂ« e mundur rinovimi i historisĂ« deri nĂ« komitetin rrĂ«njĂ«sor.
- NĂ« «git rev-list» dhe komandat e ngjashme Ă«shtĂ« shtuar opsioni «âmaximal-only» pĂ«r tĂ« treguar vetĂ«m komitetet qĂ« nuk arrihen nga komitetet e tjera.
- Ekipa «git repo info» ka marrĂ« njĂ« opsion tĂ« ri «âkeys» pĂ«r tĂ« shfaqur njĂ« listĂ« tĂ« tĂ« gjitha çelĂ«seve tĂ« njohura.
- NĂ« komandĂ«n «git add -p», gjatĂ« navigimit mes blloqeve tĂ« kodit me kĂ«lyshĂ«t «J» dhe «K», Ă«shtĂ« siguruar shĂ«nimi i blloqeve tĂ« aprovuar dhe atyre tĂ« kaluar. Shtuar njĂ« opsion «âno-auto-advance» pĂ«r tĂ« çaktivizuar kalimin automatik nĂ« skedarin e ardhshĂ«m, nĂ« mĂ«nyrĂ« qĂ« tĂ« keni mundĂ«sinĂ« tĂ« ktheheni tek skedarĂ«t e mĂ«parshĂ«m para komitimit.
- Optimizimi i ndërfaqes web «gitweb» është realizuar për funksionimin e pajisjeve mobile.
- NĂ« komandĂ«n «git apply âdirectory», para pĂ«rdorimit Ă«shtĂ« siguruar normalizimi i rrugĂ«ve tĂ« skedarĂ«ve, si p.sh. «./un/../normalized/path».
- Dokumentuar mundësinë e shtimit të nën komandave të personalizuara përmes vendosjes së skedareve «git-<cmd>» në katalogun e skedarëve ekzekutues.
- Në komandën «git send-email» është shtuar mbështetje për certifikatat e klientëve.
- Për komandën «git status» është realizuar konfigurimi «status.compareBranches», përmes së cilës mund të përcaktoni degët me të cilat do të bëhet krahasimi i degës aktuale. [status] compareBranches = @{upstream} @{push}
- NĂ« «git rebase» Ă«shtĂ« shtuar opsioni «âtrailer» pĂ«r tĂ« thjeshtuar shtimin e metadatave nĂ« tĂ« gjitha komitetet. git rebase âtrailer «Reviewed-by: Test <test@example.com>»
- Në komandën «git fast-import» është shtuar mundësia për të zëvendësuar nënshkrimet për komitetet që janë bërë të pavlefshme pas importit.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r paketimin (compaction) e indekseve multi-paketĂ« MIDX, ku bashkohen nivelet e vogla tĂ« indeksit MIDX me informacionin mbi disponueshmĂ«rinĂ« e objekteve dhe skedarĂ«t bitmap qĂ« lidhen me to, duke lejuar reduktimin e numrit tĂ« niveleve tĂ« akumuluara nĂ« depo tĂ« vjetra.
- NĂ« komandĂ«n «git backfill» Ă«shtĂ« realizuar mundĂ«sia e specifikimit tĂ« revizionĂ«ve (intervaleve tĂ« komiteteve) dhe maskave tĂ« rrugĂ«ve (pathspec) pĂ«r tĂ« kufizuar pjesĂ«t e historisĂ« sĂ« ndryshimeve qĂ« ngarkohen. git backfill main~100..main git backfill â â*.câ
- Forma alternative pĂ«r thirrjen e komandĂ«s «git config list» janĂ« shtuar â «git config -l» dhe «git config âlist».
- Lejohet përdorimi i simboleve jo-ASCII në emrat e pseudonimeve të komandave të vendosura në skedarin e konfigurimit. [alias «merr»] command = fetch
- ĂshtĂ« ndryshuar shfaqja e nĂ«nshkrimeve, pĂ«r tĂ« cilat ka skaduar afati i çelĂ«sit GPG, por qĂ« ishin tĂ« vlefshme nĂ« momentin e nĂ«nshkrimit tĂ« komitetit. NĂ«nshkrime tĂ« tilla tani shfaqen si tĂ« sakta me njĂ« shĂ«nim pĂ«r skadimin e çelĂ«sit (mĂ« parĂ« ato ishin theksuar me ngjyrĂ« tĂ« kuqe, duke krijuar pĂ«rshtypjen e pavlefshmĂ«risĂ«).
- NĂ« qasje nĂ« depo pĂ«rmes HTTP, Ă«shtĂ« siguruar pĂ«rpunimi i gabimit me kodin 429 (Too Many Requests). KĂ«rkesat qĂ« pĂ«rfundojnĂ« me kĂ«tĂ« gabim tani shqyrtohen jo si njĂ« problem fatal, por si njĂ« gabim tĂ« pĂ«rkohshĂ«m, pĂ«r tĂ« cilin pas njĂ« kohe duhet tĂ« pĂ«rsĂ«ritet operacioni. KohĂ«zgjatja para pĂ«rsĂ«ritjes caktohet pĂ«rmes opsionit "http.retryAfter", numri i pĂ«rsĂ«ritjeve â "http.maxRetries", kohĂ« pritje â "http.maxRetryTime".
Burimi: opennet.ru
