Po třech měsících vývoje byla zveřejněna verze distribuovaného systému pro správu zdrojových kódů Git 2.46. Git je jedním z nejpopulárnějších, nejspolehlivějších a vysoce výkonných systémů pro správu verzí, který poskytuje flexibilní nástroje pro nelineární vývoj založený na odvětvení a slučování větví. Pro zajištění integrity historie a odolnosti vůči retroaktivním změnám se používá implicitní hashování celé předchozí historie v každém commitu; také je možné ověřovat digitálními podpisy jednotlivé tagy a commity. Kód Git je distribuován pod licencí GPLv2+.
Ve srovnání s předchozí verzí byla do nové verze přijata 746 změn, které připravilo 96 vývojářů, z nichž 31 se účastní vývoje poprvé. Hlavní novinky:
- Byla přidána experimentální podpora nového typu bitových map - 'pseudo-merge reachability bitmap', ve kterých se na rozdíl od struktury 'reachability bitmap' údaje o sadách objektů souvisejících s commity neukládají vázaně k jednotlivým commitům, ale k několika commitům najednou. Taková organizace umožňuje použít jednu bitovou mapu k určení objektů pro commity v různých větvích, což v rozsáhlých repozitářích umožňuje obejít se bez vytváření velkého počtu samostatných bitových map a výrazně zrychlit procházení objektů při určování, které objekty je třeba odeslat klientovi při provádění operací, jako jsou 'git fetch', 'git rev-list' a 'git clone'. Pro zahrnutí nového typu bitových map a určení logiky jejich výběru a použití byla navržena řada nastavení 'bitmapPseudoMerge': git config bitmapPseudoMerge.all.pattern 'refs/(heads|tags)/' git config bitmapPseudoMerge.all.threshold now git config bitmapPseudoMerge.all.stableThreshold never git repack -adb
- Byl zaveden nový rozhraní příkazového řádku pro příkaz „git config“, které místo různých možností pro zobrazení, přejmenování a odstranění nastavení a sekcí, jako jsou „—get“, „—get-all“, „—unset“ a „—remove-section“, nabízí sadu samostatných subpříkazů. Například pro výpis všech nastavení repozitáře lze nyní použít příkaz „git config list“, a pro zobrazení obsahu určitého parametru – příkaz „git config get “. Pro další filtrování výsledků lze pomocí volby „—regexp“ zadat filtr založený na regulárním výrazu.
- Do protokolu „credential helper“, používaného pro přenos přihlašovacích údajů při přístupu k repozitářům s omezeným přístupem, byla přidána podpora nových polí „authtype“ a „credential“, které umožňují vytvářet zpracovatele pro systémy HTTP autentizace, které neomezují pouze na kontrolu uživatelského jména a hesla, například při použití Bearer Token v OAuth 2.0. Do té doby bylo nutné při práci s takovými systémy autentizace uvádět citlivé údaje v otevřeném formátu v parametru http.extraHeader. Kromě toho byl do protokolu přidán způsob ukládání stavu každého zpracovatele přihlašovacích údajů pro podporu vícestupňových metod autentizace, které se používají v takových protokolech, jako jsou NTLM a Kerberos.
- Pokračuje vývoj experimentálního backendu „reftable“ pro efektivní ukládání referencí na větve a značky v repozitáři. Tento backend využívá blokové úložiště, které používá projekt JGit a je optimalizované pro uložení velmi velkého počtu referencí (tradiční formáty ukládání referencí vedou v repozitářích s velkým počtem referencí k výrazným nákladům kvůli umístění velmi velkého počtu souborů v jednom adresáři v případě ukládání referencí v adresáři $GIT_DIR/refs nebo potřebě přepisovat jeden velký soubor při každé aktualizaci v případě ukládání referencí ve souboru $GIT_DIR/packed_refs). V nové verzi byla přidána příkaz „git refs migrate —ref-format=reftable“ pro převod stávajících repozitářů na backend „reftable“ (dříve byl backend aktivován pouze při inicializaci repozitáře).
- Do týmu git byla přidána možnost „—no-advice“, která deaktivuje všechny zprávy s doporučeními a nápovědami, což může být užitečné pro omezení zahlcení logu zbytečnými informacemi při automatizovaném volání git.
- Začal proces převodu některých kontrol z testovací sady na použití unit testů, což usnadní testování nízkoúrovňových komponent a zvýší efektivitu testovacího procesu na platformě Windows, kde dochází k vysokým nákladům při spuštění velkého počtu procesů během provádění testů realizovaných ve formě shell skriptů.
- Do kódu pro analýzu barevných nastavení byla přidána možnost použít zápis „#RGB“ vedle „#RRGGBB“.
Zdroj: opennet.ru
