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

Dostupný vydání distribuovaného systému řízení zdrojů Git 2.26.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í 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 504 změn, připravených za účasti 64 vývojářů, z nichž 12 se podílelo na vývoji poprvé. hlavní inovace:

  • Výchozí nastavení bylo přepnuto na druhá verze Komunikační protokol Git, který se používá, když se klient vzdáleně připojuje k serveru Git. Druhá verze protokolu je pozoruhodná tím, že poskytuje možnost filtrovat větve a značky na straně serveru a klientovi vrací zkrácený seznam odkazů. Dříve jakýkoli příkaz pull vždy poslal klientovi úplný seznam referencí v celém úložišti, i když klient aktualizoval pouze jednu větev nebo kontroloval, zda je jeho kopie úložiště aktuální. Další pozoruhodnou inovací je možnost přidávat do protokolu nové funkce, jakmile budou v sadě nástrojů dostupné nové funkce. Klientský kód zůstává kompatibilní se starým protokolem a může nadále pracovat s novými i starými servery a automaticky se vrátit k první verzi, pokud server nepodporuje druhou.
  • Do příkazu „git config“ byla přidána možnost „-show-scope“, která usnadňuje identifikaci místa, kde jsou definována určitá nastavení. Git umožňuje definovat nastavení na různých místech: v úložišti (.git/info/config), v uživatelském adresáři (~/.gitconfig), v konfiguračním souboru pro celý systém (/etc/gitconfig) a prostřednictvím příkazu možnosti řádků a proměnné prostředí. Při provádění „git config“ je poměrně obtížné pochopit, kde přesně je požadované nastavení definováno. K vyřešení tohoto problému byla k dispozici možnost „--show-origin“, ale zobrazuje pouze cestu k souboru, ve kterém je nastavení definováno, což je užitečné, pokud chcete soubor upravit, ale nepomůže, pokud potřebujete změnit hodnotu pomocí „git config“ pomocí možností „--system“, „--global“ nebo „-local“. Nová volba "--show-scope" zobrazuje kontext definice proměnné a lze ji použít ve spojení s -show-origin:

    $ git --list --show-scope --show-origin
    globální soubor:/home/user/.gitconfig diff.interhunkcontext=1
    globální soubor:/home/user/.gitconfig push.default=current
    […] místní soubor:.git/config branch.master.remote=origin
    lokální soubor:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    globální diff.statgraphwidth 35
    místní diff.colormoved planina

    $ git config --global --unset diff.statgraphwidth

  • V nastavení vazby pověření Použití masek v URL je povoleno. Jakákoli nastavení HTTP a přihlašovací údaje v Gitu lze nastavit jak pro všechna připojení (http.extraHeader, credential.helper), tak pro připojení na základě adresy URL (credential.https://example.com.helper, credential.https: //example. com.helper). Až dosud byly zástupné znaky jako *.example.com povoleny pouze pro nastavení HTTP, ale nebyly podporovány pro vazbu pověření. V Git 2.26 jsou tyto rozdíly odstraněny a například pro navázání uživatelského jména na všechny subdomény můžete nyní zadat:

    [přihlašovací údaje "https://*.example.com"]

    uživatelské jméno = ttaylorr

  • Pokračuje rozšiřování experimentální podpory částečného klonování (částečné klony), které umožňuje přenášet pouze část dat a pracovat s neúplnou kopií úložiště. Nová verze přidává nový příkaz „git sparse-checkout add“, který vám umožňuje přidávat jednotlivé adresáře a aplikovat operaci „checkout“ pouze na část pracovního stromu, namísto vypisování všech takových adresářů najednou pomocí příkazu „git sparse-checkout set" (můžete přidat jeden po druhém jeden adresář, aniž byste museli pokaždé znovu specifikovat celý seznam).
    Chcete-li například klonovat úložiště git/git bez odevzdání objektů BLOB, omezení checkoutu pouze na kořenový adresář pracovní kopie a samostatného označení checkoutu pro adresáře "t" a "Documentation", můžete zadat:

    $ git clone --filter=blob:none --sparse [chráněno e-mailem]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout add t
    ....
    $ git sparse-checkout přidat dokumentaci
    ....
    $ git sparse-checkout seznam
    Dokumentace
    t

  • Výkon příkazu „git grep“, který se používá k vyhledávání jak aktuálního obsahu úložiště, tak historických revizí, byl výrazně vylepšen. Pro urychlení vyhledávání bylo možné skenovat obsah pracovního stromu pomocí více vláken („git grep –threads“), ale vyhledávání v historických revizích bylo jednovláknové. Nyní bylo toto omezení odstraněno implementací schopnosti paralelizovat operace čtení z úložiště objektů. Ve výchozím nastavení je počet vláken nastaven na počet jader CPU, což nyní ve většině případů nevyžaduje explicitní nastavení volby „-threads“.
  • Přidána podpora automatického doplňování vstupu dílčích příkazů, cest, odkazů a dalších argumentů příkazu „git worktree“, což umožňuje pracovat s několika pracovními kopiemi úložiště.
  • Přidána podpora pro jasné barvy, které mají ANSI escape sekvence. Například v nastavení barev zvýraznění „git config –color“ nebo „git diff –color-moved“ můžete zadat „%C(jasně modrá)“ pomocí možnosti „--format“ pro jasně modrou.
  • Přidána nová verze skriptu fsmonitor-watchmanzajišťující integraci s mechanismem Facebook Watchman pro urychlení sledování změn souborů a vzhledu nových souborů. Po aktualizaci je vyžadován git vyměnit háček v úložišti.
  • Přidány optimalizace pro urychlení částečných klonů při použití bitmap
    (bitmapový stroj), aby se zabránilo úplnému prohledání všech objektů při filtrování výstupu. Nyní se provádí kontrola kuliček (—filter=blob:none a —filter=blob:limit=n) během částečného klonování
    výrazně rychlejší. GitHub oznámil opravy s těmito optimalizacemi a experimentální podporou částečného klonování.

  • Příkaz „git rebase“ byl přesunut do jiného backendu s použitím výchozího mechanismu „merge“ (dříve používaného pro „rebase -i“) namísto „patch+apply“. Backendy se v některých malých ohledech liší, například po pokračování operace po vyřešení konfliktu (git rebase --continue) nový backend nabízí úpravu zprávy odevzdání, zatímco starý jednoduše použil starou zprávu. Chcete-li se vrátit ke starému chování, můžete použít možnost „--apply“ nebo nastavit konfigurační proměnnou „rebase.backend“ na „apply“.
  • Příklad obslužné rutiny pro autentizační parametry specifikované přes .netrc byl zredukován na formu vhodnou pro použití ihned po vybalení.
  • Přidáno nastavení gpg.minTrustLevel pro nastavení minimální úrovně důvěryhodnosti pro různé prvky, které provádějí ověřování digitálního podpisu.
  • Přidána možnost „--pathspec-from-file“ do „git rm“ a „git stash“.
  • Vylepšování testovacích sad pokračovalo v rámci přípravy na přechod na algoritmus hash SHA-2 namísto SHA-1.

Zdroj: opennet.ru

Přidat komentář