Vydání systému správy verzí Git 2.37

Bylo představeno vydání distribuovaného systému správy verzí Git 2.37. Git je jedním z nejpopulárnějších, spolehlivých a vysoce výkonných systémů správy verzí, poskytující flexibilní nástroje pro nelineární vývoj, založené na větvení a slučování větví. Pro zajištění integrity historie a odolnosti vůči zpětným změnám se používá implicitní hashování celé předchozí historie v každém commitu, stejně jako možnost ověření 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 395 změn, které připravilo 75 vývojářů, z nichž 20 se poprvé podílelo na vývoji. Hlavní novinky:

  • Dovršena je připravenost mechanismu částečných indexů (sparse index) k širšímu využití, pokrývajících pouze část repozitáře. Částečné indexy umožňují 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) nebo se pracuje s neúplnou kopií repozitáře. V novém vydání byla dokončena integrace částečných indexů do příkazů „git show“, „git sparse-checkout“ a „git stash“. Největší zvýšení výkonu díky použití částečných indexů bylo pozorováno u příkazu „git stash“, jehož rychlost provádění se v některých případech zvýšila o 80%.
  • Byl zaveden nový mechanismus "cruft packs" pro balení nedosažitelných objektů (unreachable), na které v repozitáři chybí odkazy (neodkazují na ně větve ani tagy). Nedosažitelné objekty jsou odstraňovány správcem paměti, ale před odstraněním zůstávají v repozitáři určitou dobu, aby se předešlo stavu závodu. Pro sledování doby existence nedosažitelných objektů je nutné k nim přiřadit značky s časem změny těchto objektů, což neumožňuje uchovávat je v jednom pack-souboru, ve kterém mají všechny objekty společný čas změny. Dříve používané ukládání každého objektu do samostatného souboru vedlo k problémům při velkém počtu nových nedosažitelných objektů, které ještě nepodléhaly odstranění. Navržený mechanismus "cruft packs" umožňuje uchovávat všechny nedosažitelné objekty v jednom pack-souboru a data o čase modifikace každého objektu reflektovat v samostatné tabulce, uchovávané v souboru s příponou ".mtimes".
  • Pro Windows a macOS byl implementován vestavěný mechanismus sledování změn v souborovém systému, který umožňuje obejít se bez procházení celého pracovního adresáře při provádění operací, jako je "git status". Dříve mohly být pro sledování změn přes hooky připojeny externí nástroje pro sledování změn v FS, jako je Watchman, ale to vyžadovalo instalaci dalších programů a nastavení. Nyní je tato funkcionalita zabudována a může být aktivována příkazem "git config core.fsmonitor true".
  • V příkazu "git sparse-checkout" byla prohlášena za zastaralou podpora alternativního režimu "—cone" metody určování šablon pro částečné klonování, která umožňuje při určování části repozitáře podléhající klonování vyjmenovávat jednotlivé soubory pomocí syntaxe ".gitignore", což neumožňuje používat částečné indexy pro optimalizaci.
  • Byla zvýšena flexibilita konfigurace volání fsync() pro vyprázdnění změn na disk. Do parametru „core.fsyncMethod“ byla přidána podpora synchronizační strategie „batch“, která zrychluje práci při zápisu velkého počtu jednotlivých souborů tím, že kumuluje změny v cache, která je vyprázdněna jedním voláním fsync(). Test, během kterého bylo příkazem „git add“ přidáno 500 souborů, byl v novém režimu proveden za 0,15 sekundy, zatímco při volání fsync() pro každý soubor to trvalo 1,88 sekundy, a bez použití fsync to bylo 0,06 sekundy.
  • Do příkazů pro procházení větví, jako jsou „git log“ a „git rev-list“, byla přidána možnost „—since-as-filter=X“, která umožňuje filtrovat informace o commitech, jejichž čas vytvoření je starší než „X“. Na rozdíl od možnosti „—since“ je nový příkaz implementován jako filtr, který nezastavuje procházení po první commit, který je starší než zadaný čas.
  • V příkazu „git remote“ při uvedení příznaku „-v“ je zajištěn výstup informací o částečných klonech repozitáře.
  • Byla přidána nastavení „transfer.credentialsInUrl“, které může nabývat hodnot „warn“, „die“ a „allow“. V případě, že jsou v parametru „remote..url“ uvedeny přihlašovací údaje v otevřeném textu, pokus o provedení operací „fetch“ nebo „push“ bude ukončen chybou, pokud nastavení „transfer.credentialsInUrl“ nabývá hodnoty „die“, nebo varováním, pokud je nastavena hodnota „warn“.
  • Ve výchozím nastavení je použita nová implementace interaktivního režimu příkazu „git add -i“, přepsaná z Perlu do C.

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