Vydání ovládání zdroje Git 2.39

Po dvou měsících vývoje byl uvolněn distribuovaný zdrojový řídicí systém Git 2.39. Git je jedním z nejpopulárnějších, spolehlivých a vysoce výkonných systémů pro správu verzí, který poskytuje flexibilní nelineární vývojové nástroje založené na větvení a slučování. Pro zajištění integrity historie a odolnosti vůči retroaktivním změnám je v každém commitu použito implicitní hashování celé předchozí historie, je také možné certifikovat jednotlivé tagy a commity digitálními podpisy vývojářů.

Oproti předchozí verzi obsahovala nová verze 483 změn, připravených za účasti 86 vývojářů, z nichž 31 se podílelo na vývoji poprvé. Hlavní inovace:

  • Příkaz „git shortlog“, navržený pro zobrazení souhrnů se statistikami z historie změn, přidal možnost „-group“ pro libovolné seskupování odevzdání podle polí neomezených na autora nebo zadavatele. Chcete-li například zobrazit seznam vývojářů s informacemi o počtu změn, s přihlédnutím k pomocníkům uvedeným v poli „Spoluautor“, můžete použít příkaz: git shortlog -ns --group=author - -group=trailer:co-authored-by

    Výstup Shortlog lze agregovat pomocí specifikátorů formátování a možnost „--group“ může výrazně zjednodušit vytváření složitých sestav a eliminovat potřebu dalších příkazů pro řazení. Chcete-li například vytvořit zprávu s informacemi o tom, kolik potvrzení pro dané vydání bylo přijato v každém měsíci, můžete zadat: 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 Dříve bylo k provedení podobné operace nutné použít nástroje sort a uniq: git log v2.38.0 .. —date='format:%Y -%m' —format='%cd' | seřadit | jedinečný -c

  • Byly rozšířeny možnosti mechanismu „cruft packs“, určeného pro balení nedosažitelných objektů, na které se v úložišti neodkazuje (neodkazují na ně větve nebo značky). Nedosažitelné objekty jsou odstraněny pomocí garbage collector, ale zůstanou v úložišti po určitou dobu, než budou smazány, aby se předešlo konfliktům. Mechanismus „cruft packs“ vám umožňuje uložit všechny nedosažitelné objekty do jednoho souboru balíčku a zobrazit data o čase modifikace každého objektu v samostatné tabulce, uložené v samostatném souboru s příponou „.mtimes“, takže se nepřekrývají s celkovou dobou úpravy.

    Doba, po kterou nedostupné objekty zůstanou v úložišti, než budou skutečně odstraněny, je určena volbou „--prune=“. I když je odkládání před smazáním poměrně efektivní a praktický způsob, jak zabránit poškození úložiště kvůli rasovým podmínkám, není 100% spolehlivé. Pro snazší obnovu poškozeného úložiště poskytuje nové vydání možnost uložit chybějící objekty přidáním možnosti „--expire-to“ do příkazu „git repack“, který umožňuje zadat soubor pro vytvoření externího úložiště. kopie všech smazaných objektů. Chcete-li například uložit nedosažitelné objekty, které se za posledních 5 minut nezměnily, do souboru backup.git, můžete použít příkaz: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Výrazně se zvýšila (až o 70 %) rychlost operace „git grep -cached“ při vyhledávání v oblastech, které využívají částečné klonování (sparse-checkout) a pro které existují částečné indexy (sparse index). Dříve se při zadávání možnosti „-cached“ prohledávalo nejprve v běžném indexu a poté v dílčích, což vedlo ke znatelným zpožděním při vyhledávání ve velkých úložištích.
  • Ověření koherence nových objektů před jejich umístěním do úložiště během operace „git push“ bylo urychleno. Přechodem na účtování pouze deklarovaných odkazů při kontrole v testovacím úložišti se 7 miliony odkazů, z nichž pouze 3 % jsou pokryta operací push, umožnily zavedené optimalizace zkrátit dobu kontroly 4.5krát.
  • Pro ochranu před potenciálním přetečením celého čísla v kódu omezuje příkaz "git apply" maximální velikost záplat, které lze zpracovat. Pokud velikost opravy přesáhne 1 GB, zobrazí se nyní chyba.
  • Kvůli ochraně před potenciálními zranitelnostmi byly provedeny změny, které vyčistí nepotřebné informace ze sady hlaviček při použití modulu h2h3 s možností GIT_TRACE_CURL=1 nebo GIT_CURL_VERBOSE=1 společně s HTTP/2.
  • Při provádění rezervace na větvi, která je symbolickým odkazem na jinou větev, příkaz "git symbolic-ref HEAD" nyní zobrazuje název cílové větve, nikoli název symbolického odkazu.
  • Přidána podpora pro argument @{-1} do volby „--edit-description“ („větev git —edit-description @{-1}“) pro úpravu popisu předchozí větve.
  • Přidán příkaz "git merge-tree --stdin" pro předání seznamu možností prostřednictvím standardního vstupu.
  • Na síťových souborových systémech je obslužná rutina fsmonitor, která sleduje změny v systému souborů, ve výchozím nastavení zakázána.

Zdroj: opennet.ru

Přidat komentář