Vydání distribuovaného systému řízení zdrojů Git 2.31

Distribuovaný zdrojový řídicí systém Git 2.31 je nyní k dispozici. 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í verzi obsahovala nová verze 679 změn, připravených za účasti 85 vývojářů, z nichž 23 se podílelo na vývoji poprvé. Hlavní inovace:

  • Přidán příkaz „git maintenance“, který vám umožňuje provádět pravidelnou práci na systémech, které nepodporují cron. Pomocí nového příkazu můžete například zařídit, aby se proces balení úložiště spouštěl pravidelně, takže nemusíte čekat, až se úložiště uzamkne, když se automaticky provádí balení při spouštění různých příkazů. Příkaz „git maintenance“ umožňuje provádět optimalizace a operace pro udržení optimální struktury úložiště na pozadí, aniž by došlo k blokování interaktivní relace – jednou za hodinu se proaktivní stahování nových objektů ze vzdáleného úložiště a aktualizace soubor s grafem odevzdání a proces balení úložiště začíná každou noc .
  • Přidána podpora pro udržování zpětného indexu (revindex) na disku pro soubory pack. Připomeňme, že Git ukládá všechna data ve formě objektů, které jsou umístěny v samostatných souborech. Pro zvýšení efektivity práce s repozitářem jsou objekty navíc umístěny v pack souborech, ve kterých jsou informace prezentovány ve formě proudu objektů za sebou (podobný formát se používá při přenosu objektů pomocí git fetch a git push příkazy). Pro každý pack soubor je vytvořen indexový soubor (.idx), který umožňuje pomocí identifikátoru objektu velmi rychle určit offset v pack souboru, na kterém je daný objekt uložen. Reverzní index (.rev) představený v Git 2.31 je zaměřen na optimalizaci procesu určování identifikátoru objektu z informací o umístění objektu v souboru pack.

    Dříve se taková konverze prováděla za chodu při analýze souboru balíčku a byla uložena pouze v paměti, což neumožňovalo opakované použití podobných indexů a vynucovalo to, aby byl index pokaždé vygenerován. Operace vytváření indexu spočívá v sestavení pole párů objekt-pozice a jeho řazení podle pozice, což může u velkých balíčků trvat dlouho.

    Například operace zobrazení obsahu objektů, která používá přímý index, byla 62krát rychlejší než operace zobrazení velikosti objektů, pro kterou nebyla indexována data pozice k objektu. Po použití reverzního indexu začaly tyto operace trvat přibližně stejnou dobu. Reverzní indexy také umožňují urychlit operace odesílání objektů při provádění příkazů načítání a odesílání přímým přenosem hotových dat z disku. Ve výchozím nastavení se reverzní indexy nevytvářejí, k jejich generování je třeba povolit nastavení „git config pack.writeReverseIndex true“ a poté zabalit úložiště příkazem „git repack -Ad“.

  • Přidány optimalizace výkonu založené na vzhledu ve formátu souboru commit-graph, používané k optimalizaci přístupu k informacím o commitech, nová data o čísle generování commitů, které lze použít k urychlení dalších operací s commity.
  • Přidány možnosti pro předefinování názvu hlavní větve používané ve výchozím nastavení v nových úložištích (nastavení init.defaultBranch). Při přístupu k externím úložištím se git pokouší zkontrolovat větev, na kterou ukazuje HEAD, tj. pokud externí server standardně používá větev "main", pak se operace "git clone" pokusí vyhledat "main" lokálně. Git 2.31 nyní podporuje tento typ pokladny pro prázdná úložiště. Například při místním klonování nového úložiště před přidáním prvních oprav do něj bude nyní místní kopie obsahovat výchozí název pro upstream nastavený na externím serveru.
  • Do příkazu "git rev-list" byla přidána volba --disk-usage, která poskytuje souhrn o velikosti objektů.
  • V očekávání nadcházející změny backendu sloučení byla významně optimalizována detekce přejmenování.
  • Podpora starší knihovny regulárních výrazů PCRE1 byla ukončena.
  • Je možné násilně zakázat používání zkrácených odkazů bez ohledu na algoritmus hash. Zákaz se aktivuje přiřazením hodnoty „no“ parametru core.abbrev.
  • Do příkazu "git rev-parse" byla přidána možnost "--path-format=(absolute|relative)", která explicitně určuje, zda mají být na výstupu relativní nebo absolutní cesty.
  • Skripty dokončování bash usnadňují přidávání pravidel dokončování pro vaše vlastní dílčí příkazy „git“.
  • Do příkazu "git bundle" byla přidána volba --stdin pro čtení referencí ze standardního vstupního proudu.
  • Do příkazu "git log" byla přidána nová možnost: "--diff-merges=" "
  • Přidána možnost „--deduplicatecan“ do příkazu „git ls-files“, aby se odstranil duplicitní výstup.
  • Přidány nové masky pro vyloučení řady odevzdání - " ^!" A " ^- "
  • Do příkazu "git range-diff" byly přidány možnosti "--left-only" a "--right-only", aby se zobrazila pouze jedna strana porovnávaného rozsahu.
  • Do příkazů "git diff" a "git log" byly přidány možnosti --skip-to= " a "—rotate-to= » pro přeskočení nebo přesun na konec počátečních cest.
  • Přidána možnost "--skip-to=" do příkazu "git difftool". » pro obnovení přerušené relace z náhodné cesty.
  • Kodex chování, který definuje základní principy řešení konfliktních situací mezi vývojáři, byl aktualizován na verzi 2.0 (dříve se používala verze 1.4).

    Zdroj: opennet.ru

Přidat komentář