Vydanie ovládania zdroja Git 2.39

Po dvoch mesiacoch vývoja bol vydaný distribuovaný systém riadenia zdrojov Git 2.39. Git je jedným z najpopulárnejších, najspoľahlivejších a najvýkonnejších systémov na správu verzií, ktorý poskytuje flexibilné nelineárne vývojové nástroje založené na vetvení a zlučovaní. Na zabezpečenie integrity histórie a odolnosti voči retroaktívnym zmenám sa v každom commite používa implicitné hashovanie celej predchádzajúcej histórie, je tiež možné certifikovať jednotlivé tagy a commity digitálnymi podpismi vývojárov.

V porovnaní s predchádzajúcim vydaním obsahovala nová verzia 483 zmien, pripravených za účasti 86 vývojárov, z ktorých 31 sa podieľalo na vývoji po prvýkrát. Hlavné inovácie:

  • Príkaz „git shortlog“, navrhnutý na zobrazenie súhrnov so štatistikami z histórie zmien, pridal možnosť „-group“ pre ľubovoľné zoskupovanie odovzdaní podľa polí, ktoré nie sú obmedzené na autora alebo autora. Ak chcete napríklad zobraziť zoznam vývojárov s informáciami o počte zmien, berúc do úvahy pomocníkov uvedených v poli „Spoluautor“, môžete použiť príkaz: git shortlog -ns --group=author - -group=trailer:spoluautor

    Výstup Shortlogu je možné agregovať pomocou špecifikátorov formátovania a možnosť „--group“ môže výrazne zjednodušiť vytváranie zložitých správ a eliminovať potrebu ďalších príkazov na triedenie. Napríklad, ak chcete vytvoriť správu s informáciami o tom, koľko potvrdení pre dané vydanie bolo prijatých v každom mesiaci, môžete zadať: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Predtým by na vykonanie podobnej operácie bolo potrebné použiť nástroje sort a uniq: git log v2.38.0 .. —date='format:%Y -%m' —format='%cd' | triediť | jedinečné -c

  • Schopnosti mechanizmu „cruft packs“ určeného na balenie nedostupných objektov, na ktoré sa v úložisku neodkazuje (neodkazujú sa na ne vetvy alebo značky), boli rozšírené. Nedosiahnuteľné objekty odstráni zberač odpadu, ale pred odstránením zostanú v úložisku určitý čas, aby sa predišlo rasovým podmienkam. Mechanizmus „cruft packs“ vám umožňuje uložiť všetky nedostupné objekty do jedného súboru balíka a zobraziť údaje o čase úpravy každého objektu v samostatnej tabuľke uloženej v samostatnom súbore s príponou „.mtimes“, takže sa neprekrýva s celkovým časom úpravy.

    Dĺžka času, počas ktorého nedostupné objekty zostanú v úložisku, kým sa skutočne odstránia, je určená voľbou „—prune=“ " Aj keď je oneskorenie pred odstránením pomerne účinný a praktický spôsob, ako zabrániť poškodeniu úložiska v dôsledku rasových podmienok, nie je 100% spoľahlivé. Na uľahčenie obnovy poškodeného úložiska poskytuje nové vydanie možnosť uložiť chýbajúce objekty pridaním možnosti „--expire-to“ do príkazu „git repack“, ktorý vám umožňuje zadať súbor na vytvorenie externého kópiu všetkých odstránených objektov. Ak chcete napríklad uložiť nedostupné objekty, ktoré sa za posledných 5 minút nezmenili, do súboru backup.git, môžete použiť príkaz: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Výrazne sa zvýšila (až o 70 %) rýchlosť operácie „git grep -cached“ pri vyhľadávaní v oblastiach, ktoré využívajú čiastočné klonovanie (sparse-checkout) a pre ktoré existujú čiastočné indexy (sparse index). Predtým sa pri zadávaní možnosti „-cached“ vyhľadávanie uskutočňovalo najprv v bežnom indexe a potom v čiastočných, čo viedlo k viditeľným oneskoreniam pri vyhľadávaní vo veľkých úložiskách.
  • Zrýchlilo sa overovanie súdržnosti nových objektov serverom pred ich umiestnením do úložiska počas operácie „git push“. Prechodom na účtovanie len deklarovaných odkazov pri kontrole v testovacom úložisku so 7 miliónmi odkazov, z ktorých sú len 3 % pokryté prevádzkou push, umožnili zavedené optimalizácie skrátiť čas kontroly 4.5-krát.
  • Na ochranu pred potenciálnym pretečením celého čísla v kóde príkaz "git apply" obmedzuje maximálnu veľkosť opráv, ktoré je možné spracovať. Ak veľkosť opravy presiahne 1 GB, zobrazí sa chyba.
  • Na ochranu pred potenciálnymi zraniteľnosťami boli vykonané zmeny na vyčistenie nepotrebných informácií z nastavených hlavičiek pri použití modulu h2h3 s možnosťou GIT_TRACE_CURL=1 alebo GIT_CURL_VERBOSE=1 spolu s HTTP/2.
  • Pri vykonávaní kontroly na vetve, ktorá je symbolickým odkazom na inú vetvu, príkaz "git symbolic-ref HEAD" teraz zobrazuje názov cieľovej vetvy namiesto názvu symbolického odkazu.
  • Pridaná podpora pre argument @{-1} do možnosti „--edit-description“ („vetva git —edit-description @{-1}“) na úpravu popisu predchádzajúcej vetvy.
  • Pridaný príkaz "git merge-tree --stdin" na odovzdanie zoznamu možností cez štandardný vstup.
  • Na sieťových súborových systémoch je obslužný program fsmonitor, ktorý monitoruje zmeny v súborovom systéme, štandardne vypnutý.

Zdroj: opennet.ru

Pridať komentár