Vydanie distribuovaného systému správy zdrojových kódov Git 2.31

K dispozícii je vydanie distribuovaného systému správy zdrojového kódu Git 2.31. Git je jedným z najpopulárnejších, najspoľahlivejších a najvýkonnejších systémov správy verzií, ktorý poskytuje flexibilné prostriedky nelineárneho vývoja založené na vetvení a zlúčení. Na zabezpečenie integrity histórie a odolnosti voči zmenám „spätným spôsobom“ sa používa implicitné hashovanie celej predchádzajúcej histórie v každom commite, rovnako je možné overenie digitálnymi podpismi vývojárov jednotlivých tagov a commitov.

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

  • Bola pridaná príkaz „git maintenance“, ktorý umožňuje vykonávať periodické úlohy na systémoch, ktoré nepodporujú cron. Napríklad pomocou nového príkazu môžete zorganizovať periodické spúšťanie procesu balenia repozitára, aby ste nemuseli čakať na dokončenie blokovania repozitára pri automatickej realizácii balenia počas spúšťania rôznych príkazov. Príkaz „git maintenance“ umožňuje vykonávať optimalizácie a údržbu optimálnej štruktúry repozitára na pozadí, pričom každú hodinu sa vykonáva práca na predchádzajúcom načítaní čerstvých objektov z vzdialeného repozitára a aktualizácii súboru s grafom commitov, pričom každú noc sa spúšťa proces balenia repozitára.
  • Bola pridaná podpora vedenia na disku reverzného indexu (revindex) pre pack-súbory. Pripomeňme, že Git uchováva všetky údaje vo forme objektov, ktoré sú umiestnené v samostatných súboroch. Na zvýšenie efektivity práce s repozitárom sú objekty navyše umiestnené do pack-súborov, v ktorých sú informácie prezentované vo forme toku objektov nasledujúcich za sebou (podobný formát sa používa pri prenosu objektov príkazmi git fetch a git push). Pre každý pack-súbor sa vytvára indexový súbor (.idx), ktorý umožňuje veľmi rýchlo určiť posunutie v pack-súbore podľa identifikátora objektu, kde je tento objekt uložený. Navrhnutý v Git 2.31 reverzný index (.rev) je zameraný na optimalizáciu procesu určenia identifikátora objektu na základe informácií o umiestnení objektu v pack-súbore.

    Predtým sa takéto transformácie vykonávali na mieste počas spracovania pack súboru a uchovávali sa iba v pamäti, čo neumožňovalo opätovné použitie takýchto indexov a nútilo generovať index zakaždým. Operácia vytvárania indexu sa znižuje na vytvorenie poľa z párov "objekt-poloha" a jeho triedenie podľa polohy, čo môže trvať veľa času pre veľké pack súbory.

    Napríklad operácia zobrazovania obsahu objektov, pri ktorej sa používa priamy index, bola 62-krát rýchlejšia ako operácia zobrazenia veľkosti objektov, pre ktorú sa údaje o vzťahu medzi polohou a objektom neindexovali. Po použití spätného indexu uvedené operácie začali trvať približne rovnaký čas. Spätné indexy tiež umožňujú urýchliť operácie odosielania objektov pri vykonávaní príkazov fetch a push vďaka priamemu prenosu už pripravených údajov z disku. Podľa predvoleného nastavenia sa spätné indexy nevytvárajú, na ich generáciu je potrebné aktivovať nastavenie "git config pack.writeReverseIndex true" a následne zabaliť repozitár príkazom "git repack -Ad".

  • Boli pridanie optimalizácie výkonu založené na vzhľade vo formáte commit-graph, ktorý sa používa na optimalizáciu prístupu k informáciám o commitoch, a nových údajoch o čísle generácie commitu, ktoré môžu byť použité na urýchlenie dodatočných operácií s commitmi.
  • Boli doplnené možnosti pre prepísanie mena hlavnej vetvy, ktorá sa používa predvolene v nových repozitároch (nastavenie init.defaultBranch). Pri prístupe k externým repozitárom git sa snaží získať vetvu, na ktorú ukazuje HEAD, t.j. ak externý server používa predvolene vetvu „main“, potom sa operácia „git clone“ pokúsi lokálne získať „main“. V Git 2.31 je podpora podobného získavania teraz realizovaná aj pre prázdne repozitáre. Napríklad pri lokálnom klonovaní nového repozitára pred pridaním prvých patchov sa lokálna kópia teraz bude obsahovať nastavené na externé serveri meno hlavnej vetvy predvolene.
  • Do príkazu „git rev-list“ bola pridaná voľba „—disk-usage“, ktorá umožňuje zobraziť prehľadné údaje o veľkosti objektov.
  • V očakávaní plánovanej výmeny backendu na vykonávanie zlúčení bolo výrazne optimalizované určovanie premenovaní.
  • Podpora zastarané knižnice regulárnych výrazov PCRE1 bola prerušená.
  • Bola pridaná možnosť núteného zákazu používania skrátených odkazov, ktorý funguje nezávisle od algoritmu hashovania. Zákaz sa zapína priradením hodnoty „no“ parametru core.abbrev.
  • Do príkazu „git rev-parse“ bola pridaná voľba „—path-format=(absolute|relative)“ na explicitné určenie výstupu relatívnych alebo absolútnych ciest.
  • Vo skriptoch pre automatické dopĺňanie vstupu v Bash sa zjednodušil proces pridávania pravidiel dopĺňania pre vlastné podpríkazy „git“.
  • Do príkazu „git bundle“ bola pridaná voľba „—stdin“ na čítanie odkazov zo štandardného vstupu.
  • Do príkazu „git log“ bola pridaná nová voľba „—diff-merges=“.
  • Do príkazu „git ls-files“ bola pridaná voľba „—deduplicatecan“ na odstránenie duplicitných položiek pri výstupe.
  • Boli pridané nové masky na vylúčenie rozsahu commitov — „^!“ a „^-“.
  • Do príkazu „git range-diff“ boli pridané voľby „—left-only“ a „—right-only“ na zobrazenie len jednej strany porovnávaného rozsahu.
  • Do príkazov „git diff“ a „git log“ boli pridané voľby „—skip-to=“ a „—rotate-to=“ na preskočenie alebo presun na koniec počiatočných ciest.
  • Do príkazu „git difftool“ bola pridaná voľba „—skip-to=“ na obnovenie prerušeného sedenia z akéhokoľvek bodu.
  • Kódex správania (Code-of-conduct), ktorý určuje základné princípy riešenia konfliktov medzi vývojármi, bol aktualizovaný na verziu 2.0 (predtým sa používala verzia 1.4).

    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