Presented lëshimi i sistemit të shpërndarë të menaxhimit të kodit burimor Git 2.54. Git dallon për performancën e lartë dhe ofron mjete për zhvillimin jo linear, të bazuara në degëzimin dhe fuqizimin e degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve "në retro", përdoret hashingu implicit i të gjithë historisë së mëparshme në çdo përkushtim, si dhe vërtetimi me nënshkrime dixhitale të zhvilluesve për etiketat dhe përkushtimet individuale. Kodi Git shpërndahet në përputhje me licencën GPLv2+.
Në krahasim me lancimin e kaluar, versioni i ri përmban 770 ndryshime, të përgatitura me pjesëmarrjen e 137 zhvilluesve (66 kanë marrë pjesë për herë të parë në zhvillimin e Git).
-
Kjo realizon komandën “git history”, që ofron mundësi eksperimentale për ripërkufizimin e historisë së ndryshimeve, më të lehta dhe më të sigurta në përdorim, se sa ribazimi i përkushtimeve me komandën git rebase. Ofrohen dy operacione:
- git history reword për të ripërkufizuar mesazhin në përkushtimin e caktuar pa ndryshuar pemën e punës dhe indekset (përveç shënimeve, e gjithë gjëja mbetet e paprekur). Për shembull, për të korrigjuar një gabim shkrimi.
- git history split për ndarjen interaktive të përkushtimit të caktuar në dy përkushtime të ndryshme duke zhvendosur pjesët e zgjedhura nga përkushtimi origjinal në një përkushtim të ri.
Në lëshimet e ardhshme, pritet të shtohen komandat e tjera: git history fixup për të korrigjuar një përkushtim, git history drop për të fshirë një përkushtim, git history reorder për të ndryshuar renditjen e përkushtimeve dhe git history squash për bashkimin e përkushtimeve.
-
Implementohet një metodë e re për të përcaktuar trajtuesit (hook) në skedarët e konfigurimeve. Në vend që të vendosen skriptet me trajtues në katalogun .git/hooks në çdo depo, komandat për thirrjen e trajtuesve tani mund të përcaktohen drejtpërdrejt në skedarët e konfigurimeve. Cilësimet mund të lidhen me depon 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 lidhja e disa trajtuesve me një ngjarje. Skriptet nga .git/hooks vazhdojnë të thirren, por ekzekutohen pas trajtuesve nga skedarët e konfigurimeve. Për të parë listën e trajtuesve, duhet përdorur komanda git hook list, dhe për të çaktivizuar përzgjedhjen e thirrjes së trajtuesve – cilësimi hook..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" përdoret strategjia standarde geometric (git config set maintenance.strategy geometric), e cila lehtëson kohën e mirëmbajtjes për monorepozita të mëdha. Në krahasim me strategjinë e mëparshme që përdorte logjikën si në komandën git gc, strategjia e re shmang ri-paketimin e të gjitha objekteve dhe përjashton operacionet e tepërta që kërkojnë shumë burime, si për shembull bashkimi i të gjitha skedave pack (kur është e mundur, bashkimi bëhet në pjesë pa pastrimin e objekteve të fshira).
- Baza e të dhënave të objekteve (ODB) dhe API-të përkatëse janë transferuar në një arkitekturë të re që bazohet në përdorimin e backend-eve të ngjitur. Ristrukturimi i bërë abstrahon formatin e ruajtjes së objekteve dhe në të ardhmen do të mundësojë realizimin e mundësive të tilla si backend-e 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 operacioneve të git-hosting të mëdha.
- Në ekipin "strukturën e git repo», e cila jep informacion mbi strukturën e repos, siguron shfaqjen jo vetëm të madhësisë totale, por edhe të objekteve më të mëdha të çdo tipi, çka lejon që të përvijohet madhësia pa përdorimin e mjeteve të jashtme git-sizer.
$ git repo structure … | * Objekti 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 | | * Numri maksimal i hyrjeve [4] | 1.18 k | | * Blobs | | | * Madhësia maksimale [5] | 1019.51 KiB | | * Etiketat | | | * Madhësia maksimale [6] | 7.13 KiB |
- Në ekipin "git replay», e cila përdoret në vend të git rebase për të rikrijuar historinë në server pa një pemë pune, përfshin automatikisht përditësimin atomik të referencave (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 hedhja e komiteteve të pastra të rezultatit dhe është mundësuar rikrijimi i historisë deri në komitin rrënjor.
- Në "git rev-list» dhe komandat e ngjashme është shtuar opsioni —maximal-only për të treguar 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ë gjitha çelësave të njohur.
- Në ekipin "git add -p» Gjatë navigimit midis blloqeve të kodit me çelësat «J» dhe «K», është siguruar shënimi i blloqeve që janë miratuar dhe atyre që janë anashkaluar. Është shtuar opsioni —no-auto-advance për të çaktivizuar kalimin automatik në skedarin tjetër, për t'u mundësuar kthimin në skedarët e kaluara para komitit.
- Është optimizuar ndërfaqja web «gitweb» për t'u përdorur nga pajisjet mobile.
- Në ekipin "git apply –directory» para përdorimit është siguruar normalizimi i rrugëve të skedareve, siç janë .\/un\/..\/normalized\/path.
- Është dokumentuar mundësia e shtimit të nënkomandave të veta përmes vendosjes së skedareve git- në katalogun me skedarët 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 të cilit mund të specifikoni 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 metadatat në të gjitha komitetet:
git rebase —trailer "Reviewed-by: Test "`
- Në komandën "git fast-import» është shtuar mundësia e zëvendësimit të nënshkrimeve për komitetet që janë bërë të pavlefshme pas importit.
- Është shtuar mbështetje për paketimin (compaction) e indekseve shumë-paket MIDX (multi-pack index), ku ndodhin bashkime midis niveleve të vogla të indekseve MIDX me informacion mbi disponueshmërinë e objekteve dhe skedarët bitmap të lidhur, duke lejuar zvogëlimin e numrit të niveleve të grumbulluara në repo 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ë ngjarjeve që do të ngarkohen:
git backfill main~100..main git backfill — '*.c'
- Janë shtuar forma alternative për thirrjen e komandës git config list – git config -l dhe git config —list.
- Është lejuar përdorimi i simboleve jo-ASCII në emrat e pseudonimeve të komandave, të caktuara 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 gjatë kërkimit në depo me anë të HTTP, është siguruar trajtimi 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 duhet të përsëritet operacioni pas pak kohe. Vonesa para përsëritjes përcaktohet përmes opsionit http.retryAfter, numri i përsëritjeve – http.maxRetries, koha e pritjes – http.maxRetryTime.
Burimi: linux.org.ru
