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

Vydanie distribuovaného systému správy zdrojových kódov Git 2.31 je dostupné. Git je jedným z najpopulárnejších, najspoľahlivejších a vysoko výkonných systémov správy verzií, ktorý poskytuje flexibilné prostriedky pre nelineárny vývoj založený na pobočkovaní a zlúčení vetiev. Na zabezpečenie integrity histórie a odolnosti voči zmenám "spätného dátumu" sa využíva implicitné hashovanie všetkej predchádzajúcej histórie v každom commite, je tiež možné overenie digitálnymi podpismi vývojárov jednotlivých tagov a commitov.

V porovnaní s predchádzajúcim vydaním obsahuje nová verzia 679 zmien, ktoré pripravilo 85 vývojárov, z ktorých 23 sa zúčastnilo na vývoji po prvýkrát. Hlavné novinky:

  • Pridaná je príkaz "git maintenance", ktorý umožňuje vykonávať pravidelné úlohy na systémoch, ktoré nepodporujú cron. Napríklad pomocou nového príkazu je možné organizovať pravidelné spúšťanie procesu balenia repozitára, takže netreba čakať na dokončenie blokovania repozitára pri automatickom vykonávaní balenia počas spúšťania rôznych príkazov. Príkaz "git maintenance" umožňuje vykonávať optimalizácie a údržbové operácie optimálnej štruktúry repozitára na pozadí, bez blokovania interaktívneho sedenia — raz za hodinu sa vykonáva práca na predbežnom načítaní čerstvých objektov z diaľkového repozitára a aktualizácii súboru s grafom commitov, a každú noc sa spúšťa proces balenia repozitára.
  • Pridaná podpora vedenia na disku reverzného indexu (revindex) pre pack súbory. Pripomeňme, že Git uchováva všetky dáta 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é v pack súboroch, kde je informácia prezentovaná vo forme toku objektov, ktoré nasledujú jeden za druhým (analogický formát sa používa pri prenose 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ť posun v pack súbore podľa identifikátora objektu, v ktorom 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 konverzia vykonávala na požiadanie počas analýzy pack súboru a uchovávala sa len v pamäti, čo neumožňovalo opätovné využitie takýchto indexov a nútilo generovať index zakaždým. Operácia vytvorenia indexu sa znižuje na vytvorenie poľa z párov „objekt-poloha“ a jeho zoradenie podľa polohy, čo môže trvať veľa času pre veľké pack súbory.

    Napríklad operácia výstupu obsahu objektov, v ktorej sa používa priamy index, sa vykonávala 62-krát rýchlejšie ako operácia zobrazenia veľkosti objektov, pre ktorú sa údaje o prepojení polohy s objektom neindexovali. Po použití spätného indexu sa uvedené operácie začali vykonávať približne za rovnaký čas. Spätné indexy tiež umožňujú urýchliť operácie odosielania objektov pri vykonávaní príkazov fetch a push priamym prenosom už pripravených údajov z disku. Predvolene sa spätné indexy nevytvárajú, na ich generáciu je potrebné povoliť nastavenie „git config pack.writeReverseIndex true“ s následným zbalením repozitára príkazom „git repack -Ad“.

  • Bol pridaný výkonové optimalizácie založené na vzniku vo formáte commit-graph, ktorý sa používa na optimalizáciu prístupu k informáciám o commitoch, nové údaje o čísle generácie commitu, ktoré môžu byť použité na urýchlenie ďalších operácií s commitmi.
  • Rozšírené možnosti pre predefinovanie názvu hlavnej vetvy, ktorá sa štandardne používa v nových repozitároch (nastavenie init.defaultBranch). Pri prístupe k externým repozitárom sa git snaží získať vetvu, na ktorú odkazuje HEAD, t.j. ak externý server používa predvolene vetvu „main“, operácia „git clone“ sa pokúsi lokálne získať „main“. V Git 2.31 je podpora takéhoto získavania teraz implementovaná aj pre prázdne repozitáre. Napríklad pri lokálnom klonovaní nového repozitára pred jeho prvými patchmi, lokálna kópia teraz bude obsahovať nastavené vonkajšie serveri názov hlavnej vetvy predvolene.
  • Do príkazu „git rev-list“ bola pridaná možnosť „—disk-usage“, ktorá umožňuje zobraziť súhrnné údaje o veľkosti objektov.
  • V očakávaní nadchádzajúcej výmeny backendu pre vykonávanie zlúčenín bolo výrazne optimalizované určovanie premenovaní.
  • Podpora zastaralej knižnice regulárnych výrazov PCRE1 bola ukončená.
  • Bola poskytnutá možnosť núteného zákazu používania skrátených odkazov, ktorý funguje nezávisle od algoritmu hashovania. Zákaz sa aktivuje priradením hodnoty „no“ parametru core.abbrev.
  • Do príkazu „git rev-parse“ bola pridaná možnosť „—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 bolo zjednodušené pridávanie pravidiel doplnenia pre vlastné podpríkazy „git“.
  • Do príkazu „git bundle“ bola pridaná možnosť „—stdin“ na čítanie odkazov zo štandardného vstupného prúdu.
  • Do príkazu „git log“ bola pridaná nová možnosť „—diff-merges=“.
  • Do príkazu „git ls-files“ bola pridaná možnosť „—deduplicatecan“ na odstránenie duplicitných položiek vo výstupe.
  • Boli pridané nové masky na vylúčenie rozsahu commitov — „^!“ a „^-“.
  • Do príkazu „git range-diff“ boli pridané možnosti „—left-only“ a „—right-only“ na zobrazenie iba jednej strany porovnávaného rozsahu.
  • Do príkazov „git diff“ a „git log“ boli pridané možnosti „—skip-to=“ a „—rotate-to=“ na preskočenie alebo presun na koniec počiatočných ciest.
  • Do príkazu „git difftool“ bola pridaná možnosť „—skip-to=“ na obnovenie prerušeného sedenia z ľubovoľnej cesty.
  • 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