Vydání systému správy zdrojových kódů Git 2.35

Po dvou měsících vývoje bylo zveřejněno vydání distribuovaného systému správy zdrojových kódů Git 2.35. 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í prostředky pro nelineární vývoj založený na větvení a slučování. Pro zajištění integrity historie a odolnosti proti změnám „zpětně“ se používá implicitní hashování celé předchozí historie v každém commitu, je také možné ověřování digitálními podpisy vývojářů jednotlivých tagů a commitů.

Ve srovnání s předchozím vydáním bylo do nové verze přijato 494 změn, které připravilo 93 vývojářů, z nichž 35 se podílelo na vývoji poprvé. Hlavní novinky:

  • Byly rozšířeny možnosti využití SSH klíčů pro podpis Git objektů digitálním podpisem. Pro rozlišení platnosti několika klíčů byla přidána podpora direktiv OpenSSH „valid-before“ a „valid-after“, pomocí kterých lze zajistit správnou funkčnost s podpisy po rotaci klíče jednoho z vývojářů. Předtím vznikal problém s oddělením podpisů starým a novým klíčem – pokud se odstranil starý klíč, nebylo možné zkontrolovat podpisy vytvořené jeho pomocí, a pokud se nechal, zůstala možnost vytvářet nové podpisy starým klíčem, který již měl být nahrazen jiným. Pomocí valid-before a valid-after lze oddělit oblast platnosti klíčů na základě času vytvoření podpisu.
  • V nastavení merge.conflictStyle, které umožňuje vybrat režim formátování informací o konfliktech při slučování, byla přidána podpora režimu „zdiff3“, který přesune všechny typové řádky uvedené na začátku nebo na konci konfliktu mimo oblast konfliktu, což umožňuje dosáhnout kompaktnějšího zobrazení informací.
  • Do příkazu „git stash“ byla přidána možnost „—staged“, která umožňuje skrýt pouze změny přidané do indexu, například v situacích, kdy je nutné dočasně odložit část složitých změn, aby se nejprve přidalo to, co je již hotové, a s ostatním se vypořádalo později. Tento režim připomíná příkaz „git commit“, který zapisuje pouze změny umístěné v indexu, avšak místo vytvoření nového commitu v „git stash —staged“ se výsledek ukládá do dočasné oblasti stash. Po tom, co jsou změny potřebné, je lze vrátit příkazem „git stash pop“.
  • Do příkazu „git log“ byl přidán nový specifikátor formátu „—format=%(describe)“, který umožňuje zkombinovat výstup „git log“ s výsledkem příkazové parametry „git describe“. Parametry pro „git describe“ jsou uvedeny přímo uvnitř specifikátoru („—format=%(describe:match=,exclude=)“), ve kterém lze také zahrnout zkrácené tagy („—format=%(describe:tags=)“) a nastavit číslo hexadecimálních znaků pro identifikaci objektů („—format=%(describe:abbrev=)“). Například pro zobrazení 8 posledních commitů, jejichž tagy nemají označení kandidáta na vydání, a určení 8-znakových identifikátorů lze použít příkaz: $ git log -8 —format='%(describe:exclude=*-rc*,abbrev=13)' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642-gb56bd95bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • V nastavení user.signingKey byla implementována podpora nových typů klíčů, které nejsou omezeny na typ „ssh-“ a specifikaci plné cestě k klíči. Alternativní typy jsou zadávány pomocí prefixu „key::“, například „key::ecdsa-sha2-nistp256“ pro klíče ECDSA.
  • Výrazně se zvýšila rychlost generování seznamu změn v režimu „—histogram“, a také při použití volby „—color-moved-ws“, která ovládá zvýraznění mezer v barevném diffu.
  • V příkazu „git jump“, který se používá k poskytnutí informací Vim o přesných přechodech na požadovanou pozici v souboru při rozřešení konfliktů sloučení, prohlížení rozdílů nebo provádění vyhledávacích operací, byla dána možnost zúžení pokrytí konfliktů sloučení. Například pro omezení operací pouze na adresář „foo“ můžete uvést „git jump merge — foo“, a pro vyloučení zpracování adresáře „Documentation“ můžete zadat „git jump merge — ':^Documentation'“.
  • Byla provedena standardizace použití typu „size_t“ namísto „unsigned long“ pro hodnoty představující velikost objektů, což umožnilo použít filtry „clean“ a „smudge“ s soubory většími než 4 GB na všech platformách, včetně platforem s modelem dat LLP64, kde je typ „unsigned long“ omezen na 4 byty.
  • Do příkazu „git am“ byla přidána možnost „—empty=(stop|drop|keep)“, která při zpracování patchů z poštovní schránky umožňuje vybrat chování pro prázdné zprávy, které neobsahují patche. Hodnota „stop“ způsobí ukončení celé operace aplikace patchů, „drop“ přeskočí prázdný patch, „keep“ vytvoří prázdný commit.
  • Do příkazů „git reset“, „git diff“, „git blame“, „git fetch“, „git pull“ a „git ls-files“ byla přidána podpora částečných indexů (sparse index), která umožňuje zvýšit výkon a ušetřit místo v repozitářích, ve kterých se provádějí operace částečného klonování (sparse-checkout).
  • Příkaz „git sparse-checkout init“ byl označen jako zastaralý, místo něj by se měl používat „git sparse-checkout set“.
  • Byla přidána počáteční implementace nového backendu „reftable“ pro ukládání odkazů, jako jsou větve a tagy, v repozitáři. Nový backend využívá blokové úložiště používané projektem JGit a je optimalizován pro ukládání velkého počtu odkazů. Backend zatím není integrován se systémem odkazů (refs) a není připraven k praktickému použití.
  • Barevná paleta příkazu „git grep“ byla sladěna s nástrojem GNU grep.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster