Është lancuar versioni i sistemit të menaxhimit të versioneve të kodit burimor Git 2.54. Git ofron performancë të lartë dhe siguron mjete për zhvillim jo-linear, të bazuar në degëzim dhe bashkimin e degëve. Për të garantuar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve "retroaktive", përdoret heshimi implicit i gjithë historisë së mëparshme në çdo ndarje, si dhe autentikimi me firma digjitale të zhvilluesve për etiketat dhe ndarjet e veçanta. Kodi i 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 janë pjesëmarrës për herë të parë në zhvillimin e Git). Novitetet kryesore janë:
- Është realizuar komandë ‘git history’, e cila ofron mundësi eksperimentale për riparimin e historisë së ndryshimeve, më të thjeshta dhe më të sigurta për t'u përdorur se sa rikthimi i ndarjeve me komandën ‘git rebase’. Jepen dy operacione:
- ‘git history reword ’ për të rimarrë mesazhin në ndarjen e caktuar pa ndryshuar punën e vendeve dhe indeksin (përveç shënimeve, pjesa tjetër mbetet e palezuar). Për shembull, për të korrigjuar një gabim shtypi.
- ‘git history split ’ për ndarjen interaktive të ndarjes së caktuar në dy ndarje të ndryshme, duke zhvendosur pjesët e zgjedhura nga ndarja origjinale në një ndarje shtesë.
Në versionet e ardhshme pritet shtimi i komandave të tjera: ‘git history fixup’ për të korrigjuar një ndarje, ‘git history drop’ për të fshirë një ndarje, ‘git history reorder’ për të ndryshuar rendin e ndarjeve dhe ‘git history squash’ për të bashkuar ndarjet.
- Një metodë e re për përcaktimin e trajtuesve (hook) në skedarët e konfigurimit është realizuar. Në vend që të vendosen skriptet me trajtues në katalogun «.git/hooks» në çdo depo, komandat për thirrjen e trajtuesve tani mund të caktohen drejtpërdrejt në skedarët e konfigurimit. Cilësimet mund të lidhen me depon ose të specifikohen në skedarët e konfigurimit që vlejnë për të gjitha depositë ( /etc/gitconfig) ose për deposit e përdoruesve ( ~/ .gitconfig). Është e mundur të lidhni disa trajtues me një ngjarje. Skriptet nga «.git/hooks» akoma vazhdojnë të thirren, por fillojnë 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ë ndaluar selektivisht thirrjen e 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ë komandën «git maintenance», strategjia «geometric» është e angazhuar si strategjia e paracaktuar («git config set maintenance.strategy geometric»), e cila lejon të shkurtohet koha e mirëmbajtjes së monorepozitëve të mëdhenj. Krahasuar me strategjinë e mëparshme, e cila përdorte logjikën si në komandën «git gc», strategjia e re shmang ripakimin e të gjitha objekteve dhe përjashton operacionet tepër të ngarkuara për burimet, siç është bashkimi i të gjitha skedarëve të paketave (nëse është e mundur, bashkimi kryhet pjesë-pjesë dhe pa pastrimin e objekteve të fshira).
- Baza e të dhënave të objekteve (ODB) dhe API-të e lidhura janë kaluar në një arkitekturë të re, të bazuar në përdorimin e backend-eve të pluginn-ëve. Ristrukturimi i kryer abstarakton formatin e ruajtjes së objekteve dhe në të ardhmen do të lejojë realizimin e mundësive të tilla si backend-e dhe formate alternative objektesh, 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 të git.
- Në komandën «git repo structure», e cila ofron informacion mbi strukturën e depozitës, është siguruar shfaqja jo vetëm e madhësisë totale, por edhe e objekteve më të mëdha të çdo lloji, çka lejon të vlerësohet madhësia pa përdorimin e mjeteve të jashtme git-sizer. $ git repo structure … | * Objektet më të mëdha | | | * Komitetet | | | * Madhësia maksimale [1] | 17.23 KiB | | * Prindërit maksimale [2] | 10 | | * Pemët | | | * Madhësia maksimale [3] | 58.85 KiB | | * Hyrjet maksimale [4] | 1.18 k | | * Blobot | | | * Madhësia maksimale [5] | 1019.51 KiB | | * Etiketat | | | * Madhësia maksimale [6] | 7.13 KiB |
- Në komandën «git replay», e cila përdoret në vend të «git rebase» për të rikrijuar historinë në сервере pa një pemë pune, është përfshirë në parazgjedhje azhurnimi atomar i lidhjeve (në vend të shfaqjes së listës së komandave update-ref për ekzekutim manual), është realizuar opsioni «—revert» për anulimin e ndryshimeve nga një seri komitese, është siguruar heqja e komiteteve të zbrazëta rezultuese dhe është dhënë mundësia e rikrijimit të historisë deri në komitetin rrënjor.
- Në «git rev-list» dhe komandat e ngjashme është shtuar opsioni «—maximal-only» për të shfaqur vetëm komitetet që nuk arrihen nga komitete të tjera.
- Në komandën «git repo info» është shtuar opsioni «—keys» për të shfaqur një listë të të gjithë çelësave të njohur.
- Në komandën «git add -p», gjatë navigimit midis blloqeve të kodit me ndihmën e çelësave «J» dhe «K» është siguruar shënimi i blloqeve që janë miratuar dhe të anashkaluara. Është shtuar opsioni «—no-auto-advance» për të çaktivizuar kalimin automatik në skedarin e ardhshëm, për t'u mundësuar rikthimin në skedarët e kaluara para komitimit.
- Është optimizuar ndërfaqja web «gitweb» për funksionimin në pajisje mobile.
- Në komandën «git apply —directory» para përdorimit është siguruar normalizimi i rrugëve të skedarëve, siç janë «.\/un\/..\/normalized\/path».
- Është dokumentuar mundësia e shtimit të komandeve nënkategorike përmes vendosjes së skedarëve «git-» në katalogun e skedarëve ekzekutivë.
- Në komandën «git send-email» është shtyrë mbështetje për certifikatat e klientëve.
- Për komandën «git status» është realizuar konfigurimi «status.compareBranches», nëpërmjet të cilit mund të përcaktohen 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ë lehtësuar shtimin e metadatanave në të gjitha komitetet. git rebase —trailer «Reviewed-by: Test »
- Ekipes "git fast-import" ka marrë mundësinë për të zëvendësuar nënshkrimet për commit-et që janë bërë jo valide pas importimit.
- Është shtuar mbështetje për paketimin (compaction) e indekseve MIDX (multi-pack index), ku bashkohen katet e vogla të indeksit MIDX me informacionet mbi disponueshmërinë e objekteve dhe skedarët bitmap të lidhura, duke zvogëluar numrin e katërve të mbledhura në repository-t ekzistuese për një kohë të gjatë.
- Në komandën "git backfill" është realizuar mundësia për të specifikuar revizionet (intervalet e commit-eve) dhe maskat e rrugëve (pathspec) për të kufizuar pjesët e ngarkuara të historisë së ndryshimeve. git backfill main~100..main git backfill — '*.c'
- Shtohen forma alternative të thirrjes së komandës "git config list" — "git config -l" dhe "git config --list".
- Lejohet përdorimi i karaktereve jo-ASCII në emrat e alias-ëve të komandave që janë përcaktuar në skedarin e konfigurimit. [alias "merr"] command = fetch
- Është ndryshuar shfaqja e nënshkrimeve, të cilat kanë skaduar çelësat GPG, por ishin të vlefshme në momentin e nënshkrimit të komitetit. Të tilla nënshkrime tani shfaqen si të sakta me një shënim për skadimin e çelësit (më parë ato ishin të theksuara me ngjyrë të kuqe, çka jepte përshtypjen e pavlefshmërisë).
- Kur përdoren repository-t përmes HTTP, është siguruar trajtimi i gabimit me kodin 429 (Too Many Requests). Kërkesat që përfundojnë me këtë gabim tani konsiderohen si gabime të përkohshme, për të cilat duhet të përsëritet operacioni pas një kohe. Vonesa për përsëritjen e kërkesës përcaktohet përmes opsionit "http.retryAfter", numri i përsëritjeve — "http.maxRetries", koha e pritjes — "http.maxRetryTime".
Burimi: opennet.ru
