Vydání distribuovaného systému správy zdrojov Git 2.24

Dostupné vydání distribuovaného systému správy zdrojového kódu Git 2.24.0. 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í prostředky pro nelineární vývoj založené na větvení a slučování. Pro zajištění integrity historie a odolnosti vůči změnám "zpětně" se používá implicitní hashování celé předchozí historie v každém commitu, přičemž je také možné ověřit digitálními podpisy jednotlivých tagů a commitů.

Ve srovnání s předchozím vydáním byla do nové verze zahrnuta 544 změn, které připravilo 78 vývojářů, z nichž 21 se zapojilo do vývoje poprvé. Hlavní novinky:

  • Byla přidána podpora konfiguračních makro, pomocí kterých lze rychle přepínat mezi různými sadami nastavení, aniž by se museli podrobně zamýšlet nad konkrétními souvisejícími možnostmi. Pomocí makro není třeba pamatovat, které konkrétní nastavení je nutné změnit pro aktivaci určité funkčnosti. Například v případě zpomalení práce s velkým repozitářem může být potřeba přejít na nový mechanismus indexace, zapnout kompresi prefixů cest a zapnout cache nesledovaných souborů nastavením parametru index.version na 4 a aktivací core.untrackedCache. Makro umožňují ušetřit čas při hledání vhodného řešení v dokumentaci a ihned aktivovat nastavení s optimalizacemi pro repozitáře s velkým počtem souborů:

    git config feature.manyFiles true

  • Ve výchozím nastavení je zapnuto ukládání objektů ve formě grafu commitů (commit-graph), při kterém se pro indexaci používá nikoli lineární seznam hashů objektů s odkazy na jiné objekty, ale struktura ve formě grafu. Pokud dříve bylo k určení verzí obsahujících konkrétní opravu nutné načíst každý objekt z disku pro vyhledání odkazů, pak při ukládání ve formě grafu lze ihned určit všechny potřebné vazby. Přechod na ukládání ve formě grafu commitů v repozitářích jádra Linuxu a Gitu umožnil téměř dvakrát zvýšit výkon operací s větvemi. Pro aktivaci nové metody ukládání po aktualizaci na Git 2.24 je třeba provést příkaz „git gc“.

    Mezi změnami souvisejícími s commit-graph je také zmíněno sjednocení realizace indikátoru pokroku operací ve spojitosti s commit-graph příkazy („git commit-graph write“, „git commit-graph verify“ atd.). Indikátor pokroku se nyní ve výchozím nastavení zobrazuje pouze pro terminál (pro změnu chování by měla být použita volba „-[no-]progress“). Dále byl přidán nový konfigurační parametr fetch.writeCommitGraph, který zahrnuje automatickou aktualizaci souboru s grafem commitů při operacích „git fetch“ (všechny stažené commit z externích repozitářů budou okamžitě zahrnuty do commit-graph bez potřeby samostatného spuštění auto-gc);

  • Byl přidán příkaz pro přepsání historie změn — „git filter-repo„, který je jednodušší alternativou k příkazu „git filter-branch“ pro provádění operací s historií změn v repozitáři (například odstranění souboru z repozitáře nebo extrakce historie změn určitého adresáře). Pro zvýšení efektivity se v „git filter-repo“ operace provádějí na základě zobrazení historie ve formě kontinuálního toku místo uspořádaného příspěvku.

    Filtrování historie se provádí pomocí volby „-path-{glob,regex}“, která umožňuje aplikaci jak jednoduchých masek, tak regulárních výrazů. Jsou k dispozici také volby pro provádění operace „vyhledání a nahrazení“ nebo pro čištění binárních objektů, jejichž velikost přesahuje zadanou hodnotu. Každý přepsaný commit je vybaven novým hash identifikátorem SHA-1 a v souladu s novým identifikátorem se aktualizují všechny odkazy na nahrazený commit.

    Pro výstup shrnutí se statistikou o repozitáři (počet objektů podle typů, největší soubory a adresáře, které přípony vyžadují více místa na disku atd.) je k dispozici volba „-analyze“. Pro rozšíření funkcionality je možné připojit libovolné callback zpracovatele v jazyce Python, přes které je možné jak vytvářet nové podpříkazy, tak zpracovávat různé události (například nové typy souborů);

  • Byla přidána možnost „--end-of-options“, která umožňuje oddělit možnosti od názvů odkazů, které mohou začínat symbolem „-“ a být vnímány jako možnosti („git log --end-of-options --super-dangerous-option“). Zatímco obvyklá jména lze v praxi escapovat jako „git log 'refs/heads/--super-dangerous-option'“, mohou ve skriptech nastat problémy s určením prostoru názvů. V tomto případě není obecně používaný oddělovač „--“ aplikovatelný, protože již slouží k oddělení názvů odkazů od souborů (například „git log --end-of-options --super-dangerous-option ^master -- path/to/file“);
  • V „git rebase --rebase-merges“ byly přidány možnosti „--strategy“ a „--strategy-option“ pro výběr strategie sloučení;
  • Byl přidán nový zpracovatel „.git/hooks/pre-merge-commit“, který je volán po provedení sloučení, ale před zápisem výsledného commitu;
  • Do enginu pro automatické doplňování příkazů byla přidána podpora pro doplňování konfiguračních proměnných souvisejících s nastavením konkrétních příkazů.
    Například, pokud je třeba napsat „git -c core.autocrlf=false add path/to/my/file“, ale nepamatujete si přesný název proměnné „core.autocrlf“, můžete stisknout Tab a získat návrh.

Kromě toho vývojáři Git přidali kodex chování účastníka projektu, který stanovuje základní principy pro řešení konfliktních situací. Dokument je založen na doporučeních „Contributor Covenant“, která se používají v mnoha otevřených projektech, včetně jádra Linux, Eclipse, Freedesktop, GitLab, Ruby a Kubernetes. Dokument stanovuje rovné příležitosti pro všechny účastníky, bez ohledu na jejich názory, věk, pohlaví, náboženské preference, úroveň vzdělání, sociální status a národnost. V komunitě je vítána přátelská forma komunikace, porozumění, empatie k problémům jiných účastníků, vnímání konstruktivní kritiky, přijímání nejlepších rozhodnutí pro celou komunitu. Nepřijatelné jsou trolling, urážlivý způsob komunikace, pokusy o ponížení, obtěžování, porušování soukromí, zveřejňování osobních údajů a další činnosti, které by mohly být považovány za nevhodné v profesionální komunikaci.

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