vydání distribuovaného systému správy zdrojového kódu . 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. :
- Došlo k přechodu na 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 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 , která zajišťuje integraci s mechanizmem pro urychlení sledování změn souborů a vzniku nových souborů. Po aktualizaci git je potřeba 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
