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

Bylo oznámeno vydání distribuovaného systému řízení zdrojů Git 2.37. 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ímu vydání bylo do nové verze, připravené za účasti 395 vývojářů, přijato 75 změn, z nichž 20 se podílelo na vývoji poprvé. Hlavní inovace:

  • Mechanismus dílčích indexů (sparse index), pokrývající pouze část úložiště, byl připraven pro široké použití. Částečné indexy mohou zlepšit výkon a ušetřit místo v úložištích, která provádějí operace částečného klonování (sparse-checkout) nebo pracují s neúplnou kopií úložiště. Nové vydání dokončuje integraci dílčích indexů do příkazů git show, git sparse-checkout a git stash. Nejvýraznější výkonnostní přínos z používání částečných indexů je vidět u příkazu git stash, který v některých situacích zaznamenal 80% zvýšení rychlosti provádění.
  • Byl implementován nový mechanismus „cruft packs“ pro sbalení nedosažitelných objektů, které nejsou odkazovány v úložišti (neodkazují se na ně větve nebo značky). Nedosažitelné objekty jsou odstraněny sběračem odpadků, ale zůstanou v úložišti po určitou dobu, než budou odstraněny, aby se předešlo konfliktům. Pro sledování periody výskytu nedosažitelných objektů je nutné k nim připojit štítky s časem změny podobných objektů, což neumožňuje jejich uložení do jednoho pack souboru, ve kterém mají všechny objekty společný čas změny. Dříve vedlo ukládání každého objektu do samostatného souboru k problémům, když existovalo velké množství nových, nedostupných objektů, které ještě nebyly způsobilé k odstranění. Navrhovaný mechanismus „cruft packs“ vám umožňuje uložit všechny nedostupné objekty do jednoho souboru balíčku a odrážet data o čase modifikace každého objektu v samostatné tabulce uložené v souboru s příponou „.mtimes“.
  • Pro Windows a macOS je k dispozici vestavěný mechanismus pro sledování změn v systému souborů, který vám umožňuje vyhnout se iteracím v celém pracovním adresáři při provádění operací, jako je „stav git“. Dříve bylo možné pro sledování změn připojit externí nástroje pro sledování změn ve FS, jako je Watchman, pomocí háčků, ale to vyžadovalo instalaci dalších programů a konfiguraci. Nyní je zadaná funkce vestavěna a lze ji aktivovat příkazem „git config core.fsmonitor true“.
  • V příkazu „git sparse-checkout“ byla podpora alternativy k režimu „—cone“, metoda definování šablon pro částečné klonování, prohlášena za zastaralou, což umožňuje při určování části úložiště, která podléhá operace klonování, seznam jednotlivých souborů pomocí syntaxe „.gitignore“, která neumožňuje použití pro optimalizaci dílčích indexů.
  • Zvýšená flexibilita při konfiguraci volání fsync() pro vyprázdnění změn na disk. Do parametru „core.fsyncMethod“ byla přidána podpora strategie synchronizace „batch“, která umožňuje urychlit práci při zápisu velkého množství jednotlivých souborů akumulací změn v mezipaměti zpětného zápisu, kterou resetuje jediná funkce fsync() volání. Test, jehož výsledkem bylo přidání 500 souborů pomocí příkazu „git add“, byl dokončen za 0.15 sekundy, když byl povolen nový režim, zatímco volání fsync() trvalo 1.88 sekundy pro každý soubor a bez použití fsync - 0.06 sekundy.
  • Příkazy pro procházení větví jako „git log“ a „git rev-list“ nyní obsahují volbu „-since-as-filter=X“, která vám umožňuje odfiltrovat informace o potvrzeních, která jsou starší než „X“. Na rozdíl od volby „—since“ je nový příkaz implementován jako filtr, který nezastaví hledání po prvním potvrzení starším než zadaný čas.
  • V příkazu „git remote“ se při zadání parametru „-v“ zobrazí informace o dílčích klonech úložiště.
  • Přidáno nastavení "transfer.credentialsInUrl", které může nabývat hodnot "warn", "die" a "allow". Pokud je uvedeno v parametru „remote. .url" pověření ve formátu prostého textu, pokus o provedení operace "načtení" nebo "push" selže s chybou, pokud je nastavení "transfer.credentialsInUrl" nastaveno na "umírat", nebo s varováním, pokud je nastaveno na "varovat".
  • Ve výchozím nastavení je povolena nová implementace interaktivního režimu příkazu „git add -i“, přepsaného z Perlu do C.

Zdroj: opennet.ru

Přidat komentář