Git 2.50: Vylepšenia výkonu pre veľké repozitáre a ďalšie

git-2.50

Pred pár dňami to bolo oznámené Vydanie novej verzie projektu Git 2.50, zavádza viac ako 600 zmien poháňaná aktívnou komunitou, ktorá tentoraz zahŕňala 98 vývojárov vrátane 35 nových prispievateľov.

Táto nová verzia systému Git 2.50 sa vyznačuje integráciou nových príkazov (git-diff-pairs), novými funkciami na čistenie, filtrovanie a údržbu, nahradením rekurzívneho zlučovacieho enginu za ORT, ako aj vylepšeniami výkonu a opravami chýb.

Kľúčové nové funkcie Git 2.50

V tejto novej verzii Gitu 2.50 je jednou z najdôležitejších nových funkcií optimalizácia pri liečbe tzv. „cruft packov“, Teda balíky objektov, ktoré nie sú dostupné alebo na ktoré neodkazujú vetvy či značky. Git tradične ukladal tieto objekty do jedného veľkého súboru balíka, čo mohlo spôsobiť problémy s výkonom pri prebaľovaní repozitárov s mnohými z týchto položiek.

S novou verziou, Git vám umožňuje rozdeliť tieto cruft balíčky do niekoľkých menších súborov, čo znižuje využitie disku a zlepšuje výkon vstupu/výstupu pre hromadné operácie. Okrem toho, sa zadajte možnosť –combine-cruft-below-size, čo umožňuje flexibilnejšie spojiť malé balíky do jedného ako predchádzajúca možnosť –max-cruft-size bez obmedzenia kombinovanej veľkosti súborov. Táto nová funkcia je obzvlášť užitočná v projektoch so osirelými objektmi rozmiestnenými vo viacerých balíkoch.

Ďalším vylepšením zameraným na rozsiahle repozitáre je experimentálna podpora pre postupná aktualizácia Indexy MIDX , ktoré Ukladajú informácie o objektoch v samostatných vrstvách pomocou bitmapových súborov, čo umožňuje rýchlejšie aktualizácie pri pridávaní nových commitov. Toto vylepšenie je kľúčové pre veľké repozitáre, ktoré vyžadujú rýchle indexovacie operácie bez nutnosti úplnej prestavby metadát.

Úplná náhrada rekurzívneho zlučovacieho enginu za ORT

Git 2.50 prináša zásadnú zmenu s... trvalé odstránenie rekurzívneho fúzneho motora tradičné. Namiesto toho, používanie ORT je konsolidované, modernejší, udržiavateľnejší a efektívnejší fúzny motor. ORT nielenže ponúka presnejšiu analýzu konfliktov, ale umožňuje aj overiť, či je zlúčenie možné bez generovania ďalších objektov. Okrem toho príkaz merge-tree teraz obsahuje možnosť –quiet na použitie ako tichá kontrola zlúčenia bez úpravy repozitára.

gitt-diff-pairs: riešenie problémov so škálovateľnosťou

Kontrola kódu je nepochybne jedným z pilierov moderného kolaboratívneho vývoja a rozdiely alebo diffy medzi revíziami zohrávajú v tomto procese dôležitú úlohu. S príchodom Gitu 2.50 bolo predstavené riešenie navrhnuté pre škálovateľnosť: nový príkaz git-diff-pairs.

Tradične sa na porovnanie dvoch revízií používa príkaz ako:

git diff HEAD~1 HEAD

Toto vygeneruje kompletnú záplatu obsahujúcu všetky zmeny medzi uvedenými revíziami. Hoci je to v mnohých prípadoch účinné, pri práci s veľkými súbormi upravených súborov to môže predstavovať problém s výkonom.

Preto bol git-diff-pairs špeciálne navrhnutý tak, aby prijímal surový vstup priamo z výstupu git diff-tree a efektívne a presne generoval zodpovedajúce záplaty.

Použitie je také jednoduché ako:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

Tento príkaz berie poskytnuté páry blobov a generuje presný výstup rozdielov, pričom zachováva kontextové informácie a umožňuje rozdelenie práce do menších dávok. To otvára dvere paralelnému spracovaniu, zlepšuje efektívnosť zdrojov a uľahčuje škálovateľnosť v nástrojoch založených na rozdieloch, ako je GitLab.

Nové funkcie pre čistenie, filtrovanie a údržbu

Git 2.50 obsahuje niekoľko ďalších nástrojov určených na zlepšenie údržby repozitárov:

  • Príkaz bol pridaný drop reflogu git, čo vám umožňuje úplne odstrániť reflog pre konkrétnu vetvu, čo je ideálne na vyčistenie histórie prác, keď už nepotrebujete udržiavať predchádzajúce referencie.
  • Možnosť –filter V gite je teraz k dispozícii cat-file –batch, ktorý umožňuje filtrovať výsledky podľa typu objektu.

Okrem toho sa zdôrazňuje aj niekoľko interných optimalizácií:

  • Vylepšené používanie symbolických odkazov s ukladaním prefixov do vyrovnávacej pamäte a redukciou redundantných kontrol.
  • Odstránenie závislostí Perlu v dokumentácii a testovacích skriptoch, ich nahradenie funkciami shellu alebo implementáciami v jazyku C, čo uľahčuje ich kompiláciu na systémoch s minimalistickými konfiguráciami.
  • Vrátane ovládača rozdiel_užívateľov pre analýzu rozdielov v súboroch .ini.
  • Vylepšená kompatibilita príkazu git send-email so servermi SMTP, ako je Outlook.

Nakoniec, ak máte záujem dozvedieť sa viac o tom, môžete si prečítať podrobnosti v nasledujúci odkaz.