Git 2.51 přichází s klíčovými vylepšeními výkonu a novými funkcemi.

git 2.51

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