Git 2.51 prichádza s kľúčovými vylepšeniami výkonu a novými funkciami

git 2.51

Po dvoch mesiacoch intenzívnej práce vývojová komunita Git predstavuje verziu Gitu 2.51, aktualizácia, ktorá Združuje 506 zmien, na ktorých sa podieľalo 91 vývojárov, z ktorých 21 prispelo prvýkrát.

Toto vydanie prináša vylepšenia navrhnuté na zlepšenie výkonu a zjednodušenie správy repozitárov vrátane optimalizácie výkonu pre git-push a git-fetch, ako aj niekoľko zmien smerujúcich k novej vetve 3.x.

Kľúčové nové funkcie Git 2.51

Jednou z hlavných výhod Gitu 2.51 je Optimalizácia príkazov git push a git fetch v repozitároch s veľkým počtom referencií. Kľúčom k tomuto vylepšeniu je dávková aktualizácia, ktorý spracováva viacero odkazov v jednej transakcii, a nie jednotlivo.

Vďaka tejto optimalizácii, Reftable backend teraz prekonáva tradičný súborový backend.V testoch s repozitármi obsahujúcimi až 10 000 odkazov sa výkon funkcie git fetch zvýšil 22-krát pre reftable a 1.25-krát pre súbory, zatiaľ čo funkcia git push sa zlepšila 18-krát, respektíve 1.21-krát.

Ďalšou dôležitou inováciou je iZavedenie tzv. cruft balíčkov, určené na ukladanie neprístupných objektov, ktoré nie sú prepojené s vetvami alebo tagmi. Tieto objekty, ktoré boli predtým rozptýlené, teraz sa dajú spravovať v samostatnom balenís, čo uľahčuje ich ovládanie a znižuje veľkosť indexov s viacerými balíkmi (MIDX).

S nové nastavenie repack.MIDXMustContainCruft, Git sa vyhýba zahrnutiu týchto objektov do hlavných indexovV testoch na GitHube táto konfigurácia znížila veľkosť indexu o 38 %, zrýchlila zápisy o 35 % a zlepšila čítanie o 5 %.

Nový prístup k baleniu objektov

El Príkaz git pack-objects obsahuje parameter –path-walk, ktorý predstavuje inovatívnu metódu reorganizovať súbory balenia. Namiesto spracovania objektov na základe ich hashov ich Git teraz môže prechádzať na základe cesty k súboru a baliť tie, ktoré zdieľajú rovnaké umiestnenie, spolu. Tento prístup eliminuje potrebu predtriedenia objektov a vedie k menším a efektívnejším baliacim súborom.

Aj s touto verziou Bol štandardizovaný nový formát na výmenu pracovných stavov stromov a indexov vytvorených pomocou Git Stash.Teraz je možné exportovať a importovať úložiská rovnako ako vetvy alebo značky, čo uľahčuje presun stavov z jedného systému do druhého.

Napríklad:

git stash export --to-ref refs/stashes/mi-stash git push pôvod refs/stashes/mi-stash git fetch pôvod '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash

Vylepšenia klasických príkazov

Niekoľko Príkazy Gitu dostali relevantné aktualizácie:

  • git cat-file teraz hlási chýbajúce objekty a submoduly, pričom zobrazuje identifikátory namiesto označenia „chýbajúce“.
  • git log využíva optimalizácie filtrov Bloom, čím zrýchľuje vyhľadávanie s viacerými cestami k súborom.
  • Príkazy git switch a git restore, ktoré boli od roku 2019 považované za experimentálne, sú konečne stabilizované ako moderné alternatívy k príkazu git checkout.
  • Príkaz git whatchanged, ekvivalent príkazu git log –raw, je zastaraný a bude odstránený v systéme Git 3.0.
  • git for-each-ref dostane parameter –start-after, ktorý spolu s –count umožňuje stránkovanie výstupu.
  • Príkazy git merge a git pull teraz obsahujú možnosť –compact-summary, ktorá poskytuje stručnejší formát súhrnu.

Podpora C99 a nové pravidlá pre prispievanie

Git naďalej prispôsobuje svoj kód charakteristikám štandardu C99. Hoci je kompatibilný kompilátor vyžadovaný od roku 2021, vývojári sa opatrne snažia zachovať kompatibilitu s kompilátormi, ktoré ho implementujú len čiastočne.

Okrem toho bola zavedená významná zmena v politike príspevkov: Záplaty je teraz možné odosielať pod pseudonymom, rozhodnutie v súlade s pravidlami linuxového jadra a navrhnuté tak, aby ponúklo prispievateľom väčšiu flexibilitu.

Pohľad na Git 3.0

El Vývojový tím tiež aktualizoval plán pre Git 3.0., kde vynikajú dve kľúčové zmeny: predvolené používanie SHA-256 ako identifikátora objektu a prijatie formátu reftable na ukladanie odkazov na vetvy a značky. Cieľom týchto vylepšení je zlepšiť bezpečnosť a efektívnosť v čoraz väčších a komplexnejších repozitároch.

Fuente: https://lore.kernel.org