Po dvou měsících intenzivní práce vývojářská komunita Git představuje verzi 2.51, aktualizace, která Sdružuje 506 změn, na kterých se podílelo 91 vývojářů, z nichž 21 přispělo poprvé.
Tato verze představuje vylepšení navržená pro zlepšení výkonu a zjednodušení správy repozitářů, včetně optimalizace výkonu pro git-push a git-fetch, a také několik změn směřujících k nové větvi 3.x.
Klíčové nové funkce Git 2.51
Jednou z hlavních výhod Gitu 2.51 je Optimalizace příkazů git push a git fetch v repozitářích s velkým počtem referencí. Klíčem k tomuto vylepšení je dávková aktualizace, který zpracovává více odkazů v rámci jedné transakce, nikoli jednotlivě.
Díky této optimalizaci, Backend pro reftable nyní překonává tradiční backend pro soubory.V testech s repozitáři obsahujícími až 10 000 odkazů se výkon funkce git fetch zvýšil 22x pro reftable a 1.25x pro soubory, zatímco funkce git push se zlepšila 18x, respektive 1.21x.
Další důležitou inovací je iZavedení tzv. cruft balíčků, určené k ukládání nepřístupných objektů, které nejsou propojeny s větvemi nebo tagy. Tyto objekty, které byly dříve rozptýleny, nyní lze spravovat v samostatném balenís, což usnadňuje jejich ovládání a zmenšuje velikost indexů s více balíčky (MIDX).
S Díky novému nastavení repack.MIDXMustContainCruft se Git vyhýbá zahrnutí těchto objektů do hlavních indexů.V testech na GitHubu tato konfigurace zmenšila velikost indexu o 38 %, zrychlila zápisy o 35 % a zlepšila čtení o 5 %.
Nový přístup k balení objektů
El Příkaz git pack-objects obsahuje volbu –path-walk, který zavádí inovativní metodu reorganizovat soubory balení. Místo zpracování objektů na základě jejich hashů nyní Git může iterovat mezi nimi na základě cesty k souboru a zabalit ty, které sdílejí stejné umístění, dohromady. Tento přístup eliminuje nutnost předběžného třídění objektů a vede k menším a efektivnějším souborům pro zabalení.
I s touto verzí Byl standardizován nový formát pro výměnu stavů pracovních stromů a indexů vytvořených pomocí Git Stash.Nyní je možné exportovat a importovat úložiště stejně jako větve nebo tagy, což usnadňuje přesun stavů z jednoho systému do druhého.
Například:
git stash export --to-ref refs/stashes/mi-stash git push origin refs/stashes/mi-stash git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash
Vylepšení klasických příkazů
Několik Příkazy Gitu obdržely příslušné aktualizace:
- git cat-file nyní hlásí chybějící objekty a submoduly a zobrazuje identifikátory místo pouhého označení „chybějící“.
- git log těží z optimalizace Bloomova filtru, což zrychluje vyhledávání s více cestami k souborům.
- Příkazy git switch a git restore, které byly od roku 2019 považovány za experimentální, jsou konečně stabilizovány jako moderní alternativy k příkazu git checkout.
- Příkaz git whatchanged, ekvivalentní příkazu git log –raw, je zastaralý a bude v Gitu 3.0 odstraněn.
- git for-each-ref přijímá volbu –start-after, která spolu s –count umožňuje stránkování výstupu.
- Příkazy git merge a git pull nyní obsahují volbu –compact-summary, která poskytuje stručnější formát shrnutí.
Podpora C99 a nová pravidla pro přispívání
Git nadále přizpůsobuje svůj kód charakteristikám standardu C9.9. Přestože je kompatibilní kompilátor vyžadován od roku 2021, vývojáři se opatrně snaží zachovat kompatibilitu s kompilátory, které jej implementují pouze částečně.
Kromě toho byla zavedena významná změna v příspěvkové politice: Záplaty lze nyní odesílat pod pseudonymem, což je rozhodnutí v souladu s pravidly linuxového jádra a navržené tak, aby nabídlo přispěvatelům větší flexibilitu.
Těšíme se na Git 3.0
El Vývojový tým také aktualizoval plán pro Git 3.0., kde vynikají dvě klíčové změny: výchozí použití SHA-256 jako identifikátoru objektu a přijetí reftable formátu pro ukládání odkazů na větve a tagy. Tato vylepšení si kladou za cíl zvýšit bezpečnost a efektivitu ve stále větších a složitějších repozitářích.
zdroj: https://lore.kernel.org