Vydání distribuovaného systému správy zdrojového kódu Git 2.25

Dostupné vydání distribuovaného systému správy zdrojového kódu Git 2.25.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í verzí obsahuje nová verze 583 změn, na kterých se podílelo 84 vývojářů, z nichž 32 se na vývoji podílelo poprvé. Hlavní novinky:

  • Blíží se ke stabilizaci a plné připravenosti možnost přítomného klonování (partial clones), která umožňuje přenášet pouze část dat a pracovat s neúplnou kopií repozitáře. Při běžném klonování se z repozitáře kopírují všechna data, včetně každé verze každého souboru z historie změn. Pro velmi velké repozitáře kopírování dat vede k významnému nárůstu provozu a diskového prostoru, i když vývojáře zajímá pouze podmnožina souborů. Pro usnadnění získání pouze části pracovního stromu zdrojových textů byl v novém vydání navržen experimentální příkaz „sparse-checkout“ a nová možnost „—sparse“ pro příkaz „clone“.

    Dříve se proces selektivního klonování prováděl prostřednictvím zadání filtrů k filtrování nadbytečného obsahu a možnosti „—no-checkout“ pro vypnutí obnovy chybějících souborů. Poté, před provedením operace checkout, bylo nutné zapnout nastavení core.sparseCheckout a určit v souboru .git/info/sparse-checkout seznam vzorů vylučovaných cest. Například pro klonování bez blobů a zakázání získávání souborů z vnořených adresářů hloubky 2 a více bylo možné provést:

    git clone —filter=blob:none —no-checkout /your/repository/here repo
    $ cd repo
    $ cat >.git/info/sparse-checkout <<EOF
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout .

    Nový příkaz „git sparse-checkout“ značně zjednodušuje práci a redukuje proces organizace práce s neúplným repozitářem na příkazy:

    git clone —filter=blob:none —sparse /your/repository/here repo
    git sparse-checkout set /path/to/check/out

    Příkaz sparse-checkout umožňuje nastavit seznam cest pro checkout (set) bez ručního nastavení .git/info/sparse-checkout, a také zobrazit aktuální seznam cest (list) a povolit nebo zakázat částečné checkout (enable/disable).

    Pro optimalizaci práce s velmi velkými repozitáři a seznamy vzorů byla navržena konfigurace „git config core.sparseCheckoutCone„, omezující povolené šablony (místo libovolných šablon .gitignore lze určit, které cesty a soubory v daném podadresáři mají být extrahovány). Například pokud velké úložiště obsahuje adresář „A/B/C“ a veškerá práce se soustředí v podadresáři „C“, pak při zapnutí režimu sparseCheckoutCone příkaz „git sparse-checkout set A/B/C“ extrahuje celý obsah „C“, ale z „A“ a „B“ pouze potřebné části pro práci s „C“.

  • Z dokumentace („git rebase -h“) byla odstraněna všechna zmínka o volbě „—preserve-merges“, která je považována za zastaralou, a místo ní pro přesun sady commitů by se mělo používat „git rebase —rebase-merges«.
  • Aby se zlepšila čitelnost zpráv s patchi odesílaných na mailing listy, byla přidána volba „git format-patch —cover-from-description subject“, která, když je uvedena, použije první odstavec z textu popisu větve jako předmět průvodního dopisu pro sadu patchů.
  • Byla implementována podpora pro společné použití příkazu „git apply —3way“ a nastavení „merge.conflictStyle“ („git apply“ nyní zohledňuje styl popisu konfliktu z merge.conflictStyle, pokud je třeba vyřešit konflikt po pokusu o aplikaci souboru s patchem na úložiště).
  • Kód pro definici funkcí používaný v takových operacích jako „git diff/grep —show-function/—function-context“ byl rozšířen o podporu pro definici hranic funkcí v programech napsaných v jazyce Elixiru.
  • V příkazech „git add“, „git commit“, „git reset“ a dalších byla přidána nová volba „—pathspec-from-file“, která umožňuje načíst seznam cest ze souboru nebo z vstupního proudu místo jejich vyjmenování v příkazovém řádku.
  • Byl vyřešen problém s určením přejmenování na úrovni adresářů při zapisování commitů. Určení nefungovalo v případě přesunu obsahu podadresáře do kořene úložiště.
  • Byla navržena počáteční implementace přepracovaného příkazu „git add -i“, která umožňuje přidávat změněný obsah v interaktivním režimu, přepsaná z Perlu na C. Podobná přepracování se konají pro příkaz „git add -p“.
  • Byla provedena refaktorizace příkazu „git log —graph“, který vytváří ASCII obrázek grafu s historií změn v úložišti. Přepracování umožnilo výrazně zlepšit a zjednodušit výstup bez zkreslení struktury historie, což například vyřešilo problém s vystupováním obrázku za hranici šířky řádku terminálu.
  • Možnost „git log —format=..“, která umožňuje změnit formát výstupu,
    byla rozšířena o podporu příznaků „l/L“ pro výstup pouze části e-mailové adresy uvedené před symbolem „@“ (například je to užitečné, když mají všichni vývojáři stejné e-maily v jedné doméně).
  • Do příkazu „git submodule“ byla přidána podpora „set-url“.
  • Testovací sady byly aktualizovány v rámci přípravy na přechod na
    hashovací algoritmus SHA-2 místo SHA-1.

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