Vydání distribuovaného systému správy verzí Git 2.26

Dostupné vydání distribuovaného systému správy zdrojového kódu 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í 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í bylo do nového vydání zahrnuto 504 změn, na kterých se podílelo 64 vývojářů, z nichž 12 se poprvé zapojilo do vývoje. Hlavní novinky:

  • Došlo k přechodu na druhou verzi komunikačního protokolu Git, který se používá při vzdáleném připojení klienta k serveru Git. Druhá verze protokolu je výjimečná tím, že umožňuje filtrování větví a tagů na straně serveru a vrací klientovi zkrácený seznam odkazů. Dříve při provádění jakéhokoli příkazu pro načtení byl klientovi vždy odesílán celý seznam odkazů ve všech repozitářích, i když klient aktualizoval pouze jednu větev nebo kontroloval aktuálnost své kopie repozitáře. Dalším výrazným novým prvkem je možnost přidávání nových funkcí do protokolu, jakmile se nové funkce objevují v nástrojích. Kód klienta zůstává kompatibilní se starým protokolem a může fungovat jak s novými, tak se starými servery, přičemž se automaticky vrací k první verzi, pokud server nepodporuje druhou.
  • Do příkazu „git config“ byla přidána volba „—show-scope“, která usnadňuje zjišťování místa, kde jsou definována různá nastavení. Git umožňuje definovat nastavení na různých místech: v repozitáři (.git/info/config), v katalogu uživatele (~/.gitconfig), v systémovém konfiguračním souboru (/etc/gitconfig) a také prostřednictvím příkazových možností a proměnných prostředí. Při provádění „git config“ je poměrně obtížné zjistit, kde je konkrétní nastavení definováno. Pro tento účel byla dostupná volba „—show-origin“, ale ta pouze ukazuje cestu k souboru, ve kterém je nastavení definováno, což je užitečné, pokud máme v úmyslu soubor upravit, ale nepomůže, pokud potřebujeme změnit hodnotu pomocí „git config“ s volbami „—system“, „—global“ nebo „—local“. Nová volba „—show-scope“ zobrazuje kontext definice proměnných a může být použita společně s „—show-origin“:

    $ git —list —show-scope —show-origin
    global file:/home/user/.gitconfig diff.interhunkcontext=1
    global file:/home/user/.gitconfig push.default=current
    […]
    local file:.git/config branch.master.remote=origin
    local file:.git/config branch.master.merge=refs/heads/master

    $ git config —show-scope —get-regexp ‘diff.*’
    global diff.statgraphwidth 35
    local diff.colormoved plain

    $ git config —global —unset diff.statgraphwidth

  • V nastavení vazby přihlašovacích údajů Povolené masky v URL. Jakékoli nastavení HTTP a přihlašovací údaje v Gitu mohou být nastaveny jak pro všechna připojení (http.extraHeader, credential.helper), tak pro spojení vázaná na URL (credential.https://example.com.helper, credential.https://example.com.helper). Dosud byly masky, jako například *.example.com, povoleny pouze pro nastavení HTTP, ale nebyly podporovány pro přihlašovací údaje. V Gitu 2.26 byly tyto rozdíly odstraněny a například pro vázání uživatelského jména na všechny subdomény je nyní možné specifikovat:

    [credential «https://*.example.com»]

    username = ttaylorr

  • Bylo pokračováno v rozšiřování experimentální podpory pro částečné klonování (partial clones), které umožňuje přenášet pouze část dat a pracovat s neúplnou kopií repozitáře. V nové verzi byla přidána nová příkaz "git sparse-checkout add", který umožňuje přidávat jednotlivé adresáře pro použití operace "checkout" pouze na část pracovního stromu, místo abyste vyjmenovávali všechny podobné adresáře najednou pomocí příkazu "git sparse-checkout set" (můžete přidat jeden adresář, aniž byste museli znovu zadávat celý seznam pokaždé).
    Například pro klonování repozitáře git/git bez předání blobů a omezení kontroly pouze na kořenový adresář pracovní kopie a rozdělenou značku pro extrakci adresářů "t" a "Documentation" můžete specifikovat:

    $ git clone —filter=blob:none —sparse git@github.com:git/git.git

    $ cd git
    $ git sparse-checkout init —cone

    $ git sparse-checkout add t
    ….
    $ git sparse-checkout add Documentation
    ….
    $ git sparse-checkout list
    Documentation
    t

  • Výrazně se zvýšil výkon příkazu "git grep", používaného k hledání jak v aktuálním obsahu repozitáře, tak v historických revizích. 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é. Toto omezení bylo nyní odstraněno díky implementaci možnosti paralelizace operací čtení z úložiště objektů. Ve výchozím nastavení je počet vláken nastaven na počet jader CPU, což většinou nyní nevyžaduje explicitní nastavení možnosti "—threads".
  • Byla přidána podpora automatického doplňování vstupu podřízených příkazů, cest, odkazů a dalších argumentů příkazu "git worktree", který umožňuje pracovat s několika pracovními kopiemi repozitáře.
  • Byla přidána podpora jasných barev, pro které existují ANSI escape sekvence. Například, v nastavení barev zvýraznění „git config —color“ nebo „git diff —color-moved“ pomocí volby „—format“ pro jasně modrou lze uvést „%C(brightblue)“.
  • Byla přidána nová verze skriptu fsmonitor-watchman, která zajišťuje integraci s mechanizmem Facebook Watchman pro urychlení sledování změn souborů a vzniku nových souborů. Po aktualizaci git je potřeba nahradit hook v repozitáři.
  • Byly přidány optimalizace pro urychlení operací částečného klonování (partial clones), spojené s použitím bitmapových struktur
    (bitmap machinery) pro vyhnutí se úplnému procházení všech objektů během filtrace výstupu. Kontrola na blob (—filter=blob:none a —filter=blob:limit=n) při částečném klonování se nyní provádí
    podstatně rychleji. GitHub oznámil aplikaci patchů s těmito optimalizacemi a experimentální podporu částečného klonování.
  • Příkaz „git rebase“ byl přenesen na jiný backend, který jako výchozí používá mechanismus ‚merge‘ (dříve používaný pro „rebase -i“) místo ‚patch+apply‘. V některých drobnostech se backendy liší, například, po pokračování operace po vyřešení konfliktu (git rebase —continue) nový backend nabízí editaci zprávy commitu, zatímco starý pouze použil starou zprávu. Pro návrat k starému chování lze použít volbu „—apply“ nebo nastavit konfigurační proměnnou ‚rebase.backend‘ na hodnotu ‚apply‘.
  • Příklad zpracovatele parametrů autentizace zadaných prostřednictvím .netrc byl přizpůsoben pro použití přímo.
  • Byla přidána nastavení gpg.minTrustLevel pro určení minimální úrovně důvěry pro různé prvky provádějící ověření digitálního podpisu.
  • Do „git rm“ a „git stash“ byla přidána volba „—pathspec-from-file“.
  • Pokračuje v vylepšování testovacích sad 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