Vydanie systému na správu zdrojového kódu Git 2.54

Bol vydaný nový release distribuovaného systému správy verzií Git 2.54. Git sa vyznačuje vysokou výkonnosťou a poskytuje prostriedky pre nelineárny vývoj, založený na vetvení a zlúčení vetiev. Na zabezpečenie integrity histórie a odolnosti voči 'spätným úpravám' sa používajú implicitné hashovanie celej predchádzajúcej histórie v každom commite, ako aj digitálne podpisy vývojárov pre jednotlivé tagy a commity. Kód Git je distribuovaný pod licenciou GPLv2+.

V porovnaní s predchádzajúcim vydaním bola do novej verzie prijatá 770 zmien, na ktorých sa podieľalo 137 vývojárov (66 z nich sa podieľalo na vývoji Git po prvýkrát). Hlavné novinky:

  • Bola implementovaná príkaz 'git history', ktorý poskytuje experimentálne možnosti na prepísanie histórie zmien, jednoduchšie a bezpečnejšie na použitie ako rebazovanie commitov príkazom 'git rebase'. K dispozícii sú dve operácie:
    • 'git history reword ' na prepísanie správy v určenom commite bez zmeny pracovného adresára a indexu (okrem poznámky, ostatné zostáva nedotknuté). Napríklad na opravu preklepu.
    • 'git history split ' na interaktívne rozdelenie určeného commitu na dva rôzne commity s presunom vybraných častí z pôvodného commitu do dodatočného commitu.

    V budúcich vydaniach sa očakáva pridanie ďalších príkazov: 'git history fixup' na opravu commitu, 'git history drop' na odstránenie commitu, 'git history reorder' na zmenu poradia commitu a 'git history squash' na zlúčenie commitov.

  • Bol nový spôsob určovania spracovateľov (hook) v konfiguračných súboroch. Namiesto umiestnenia skriptov s spracovateľmi do adresára „.git/hooks“ v každom repozitári, príkazy na vyvolanie spracovateľov teraz možno definovať priamo v konfiguračných súboroch. Nastavenia je možné viazať na repozitár alebo uviesť v konfiguračných súboroch, ktoré platia pre všetky repozitáre (/etc/gitconfig) alebo repozitáre používateľa (~/.gitconfig). Možné je viazať niekoľko spracovateľov na jednu udalosť. Skripty z „.git/hooks“ naďalej budú vyvolávané, ale spúšťajú sa po spracovateľoch z konfiguračných súborov. Na zobrazenie zoznamu spracovateľov by sa mala použiť príkaz „git hook list“, a na selektívne zakázanie vyvolania spracovateľov sa používa nastavenie „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
  • V príkaze „git maintenance“ je predvolene využívaná stratégia „geometric“ („git config set maintenance.strategy geometric“), ktorá umožňuje skrátiť čas údržby veľkých monorepozitárov. V porovnaní s predtým používanou stratégiou, ktorá využívala logiku ako v príkaze „git gc“, nová stratégia sa vyhýba prebalovaniu všetkých objektov a vylučuje nadmerne náročné operácie, ako je zlúčenie všetkých pack-súborov (pokud je to možné, zlúčenie sa uskutočňuje po častiach a bez čistenia odstránených objektov).
  • Databáza objektov (ODB) a s ňou súvisiace API prešli na novú architektúru, založenú na použití pripojiteľných backendov. Restrukturalizácia abstrahuje formát ukladania objektov a v budúcnosti umožní implementáciu takých funkcií, ako sú alternatívne backendy a formáty objektov, napríklad na efektívnejšie ukladanie veľkých binárnych súborov alebo na optimalizáciu práce s veľkými git-hostingmi.
  • V tíme „git repo structure“, ktoré poskytuje informácie o štruktúre repozitára, je zabezpečené zobrazenie nielen celkovej veľkosti, ale aj výpis najväčších objektov každého typu, čo umožňuje posúdiť veľkosť bez použitia externého nástroja git-sizer. $ git repo structure … | * Najväčšie objekty | | | * Commity | | | * Maximálna veľkosť [1] | 17.23 KiB | | * Maximálny počet rodičov [2] | 10 | | * Stromy | | | * Maximálna veľkosť [3] | 58.85 KiB | | * Maximálny počet položiek [4] | 1.18 k | | * Bloby | | | * Maximálna veľkosť [5] | 1019.51 KiB | | * Značky | | | * Maximálna veľkosť [6] | 7.13 KiB |
  • V tíme „git replay“, ktorý sa používa namiesto „git rebase“ na obnovenie histórie na serveri bez pracovného adresára, je predvolene zahrnutá atomárna aktualizácia odkazov (namiesto výpisu zoznamu príkazov update-ref na manuálne vykonanie), bola realizovaná možnosť „—revert“ na zrušenie zmien zo série commitov, zaručené vyraďovanie výsledných prázdnych commitov a objavila sa možnosť obnovenia histórie až po koreňový commit.
  • V „git rev-list“ a podobných príkazoch bola pridaná možnosť „—maximal-only“ na zobrazenie iba commitov, ktoré nie sú dosiahnuteľné inými commitmi.
  • Do príkazu „git repo info“ bola pridaná možnosť „—keys“ na výpis zoznamu všetkých známych kľúčov.
  • V príkaze „git add -p“ pri navigácii medzi blokmi kódu pomocou kláves „J“ a „K“ je zabezpečené označovanie už schválených a vynechaných blokov. B bola pridaná možnosť „—no-auto-advance“ na vypnutie automatického prechodu na nasledujúci súbor, aby ste mali možnosť vrátiť sa k predchádzajúcim súborom pred commitom.
  • Bola optimalizovaná webová rozhranie „gitweb“ pre prácu z mobilných zariadení.
  • V príkaze „git apply —directory“ pred použitím je zabezpečená normalizácia súborových ciest, ako sú „.\/un\/..\/normalized\/path“.
  • Dokumentovaná je možnosť pridania vlastných podpríkazov prostredníctvom umiestnenia súborov „git-“ v adresári s vykonávateľnými súbormi.
  • Do príkazu „git send-email“ bola pridaná podpora klientskych certifikátov.
  • Pre príkaz „git status“ bola implementovaná konfigurácia „status.compareBranches“, vďaka ktorej môžete určiť vetvy, s ktorými sa bude porovnávať aktuálna vetva. [status] compareBranches = @{upstream} @{push}
  • V „git rebase“ bola pridaná možnosť „—trailer“ na zjednodušenie pridávania metadát ku všetkým commitom. git rebase —trailer „Reviewed-by: Test “
  • Do tímu „git fast-import“ bola pridaná možnosť nahradiť podpisy pre commity, ktoré sa stali neplatnými po importe.
  • Bola pridaná podpora kompresie (compaction) viacbalíkových indexov MIDX (multi-pack index), pri ktorej sú malé vrstvy MIDX-indexu so informáciami o dostupnosti objektov a súvisiacimi bitmapovými súbormi kombinované, čo umožňuje znížiť počet akumulovaných vrstiev v starších repozitároch.
  • V príkaze „git backfill“ bola implementovaná možnosť určovania revízií (rozsahov commitov) a masiek ciest (pathspec) na obmedzenie načítaných častí histórie zmien. git backfill main~100..main git backfill — ‘*.c’
  • Boli pridané alternatívne formy volania príkazu „git config list“ — „git config -l“ a „git config —list“.
  • Bolo povolené používanie ne-ASCII znakov v menách aliasov príkazov definovaných v konfiguračnom súbore. [alias „získať“] command = fetch
  • Zmenilo sa zobrazenie podpisov, ktorých platnosť GPG-kľúčov vypršala, ale ktoré boli platné v čase podpisovania commitu. Takéto podpisy sú teraz zobrazené ako platné s poznámkou o zastaraní kľúča (predtým boli zvýraznené červenou farbou, čo vytváralo dojem ich neplatnosti).
  • Pri prístupe k repozitárom cez HTTP je zabezpečené spracovanie chyby s kódom 429 (Too Many Requests). Dopyty, ktoré skončili podobnou chybou, sú teraz považované nie za fatálny problém, ale za dočasnú chybu, ktorú je potrebné po nejakom čase zopakovať. oneskorenie pred opakovaním sa nastavuje pomocou voľby „http.retryAfter“, počet opakovaní — „http.maxRetries“, čas čakania — „http.maxRetryTime“.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster