Vydanie systému správy zdrojových kódov Git 2.37

Predstavené je vydanie distribuovaného systému správy zdrojových kódov Git 2.37. Git je jedným z najpopulárnejších, najspoľahlivejších a najvýkonnejších systémov na správu verzií, ktorý poskytuje flexibilné prostriedky na nelineárny vývoj založené na vetvení a zlúčení. Na zabezpečenie integrity histórie a odolnosti voči zmenám "spätnou platnosťou" sa používa neexplicitné hashovanie celej predchádzajúcej histórie v každom commite, rovnako je možné overenie digitálnymi podpismi vývojárov jednotlivých tagov a commitov.

V porovnaní s predchádzajúcim vydaním bola do novej verzie prijatá 395 zmien, pripravených s účasťou 75 vývojárov, z ktorých 20 sa zúčastnilo na vývoji prvýkrát. Hlavné novinky:

  • Dokončený je mechanizmus čiastočných indexov (sparse index), ktorý pokrýva len časť repozitára, pripravený na široké použitie. Čiastočné indexy umožňujú zlepšiť výkon a ušetriť miesto v repozitároch, v ktorých sa vykonávajú operácie čiastočného klonovania (sparse-checkout) alebo sa pracuje s neúplnou kópiou repozitára. V novom vydaní bola dokončená integrácia čiastočných indexov do príkazov „git show“, „git sparse-checkout“ a „git stash“. Najvýraznejší zisk v oblasti výkonu pri používaní čiastočných indexov sa pozoruje pri príkaze „git stash“, ktorého rýchlosť vykonávania sa v niektorých situáciách zvýšila o 80%.
  • Bol zavedený nový mechanizmus „cruft packs“ na balenie nedosiahnuteľných objektov (unreachable), na ktoré v repozitári chýbajú odkazy (nesú ich vetvy alebo tagy). Nedosiahnuteľné objekty sú odstraňované zberačom odpadu, ale pred ich odstránením zostávajú určitý čas v repozitári, aby sa predišlo pretekaniu stavov. Na sledovanie doby existencie nedosiahnuteľných objektov je potrebné k ním priradiť štítky s časom zmeny týchto objektov, čo neumožňuje uchovávať ich v jednom pack-súbore, v ktorom majú všetky objekty spoločný čas zmeny. Predtým používané uchovávanie každého objektu v samostatnom súbore viedlo k problémom pri prítomnosti veľkého množstva čerstvých nedosiahnuteľných objektov, ktoré ešte nepodliehali odstráneniu. Navrhnutý mechanizmus „cruft packs“ umožňuje uchovávať všetky nedosiahnuteľné objekty v jednom pack-súbore, a údaje o čase modifikácie každého objektu odrážať v samostatnej tabuľke uchovávanej v súbore s príponou „.mtimes“.
  • Pre Windows a macOS bol zavedený zabudovaný mechanizmus sledovania zmien v súborovom systéme, ktorý umožňuje obísť prehľadávanie celého pracovného adresára pri vykonávaní takých operácií, ako je „git status“. Predtým sa na sledovanie zmien prostredníctvom hook-ov mohli zapájať externé nástroje na sledovanie zmien v FS, ako napríklad Watchman, ale to si vyžadovalo inštaláciu ďalších programov a nastavenie. Teraz je táto funkčnosť zabudovaná a môže byť aktivovaná príkazom „git config core.fsmonitor true“.
  • V príkaze „git sparse-checkout“ bola vyhlásená za zastaranú podpora alternatívneho režimu „—cone“ metódy určovania šablón na čiastočné klonovanie, ktorá umožňuje pri určovaní časti repozitára, ktorá podlieha operácii klonovania, uvádzať jednotlivé súbory pomocou syntaktického pravidla „.gitignore“, čo neumožňuje použiť na optimalizáciu čiastkové indexy.
  • Zvýšená flexibilita nastavenia volania fsync() pre ukladanie zmien na disk. Do parametra „core.fsyncMethod“ bola pridaná podpora synchronizačnej stratégie „batch“, ktorá urýchľuje prácu pri zápise veľkého počtu jednotlivých súborov akumulovaním zmien do cache spätnej zápisnice, ktorá sa vyprázdňuje jedným volaním fsync(). Test, pri ktorom bol príkazom „git add“ pridaných 500 súborov, bol vykonaný za 0,15 sekundy, zatiaľ čo pri volaní fsync() pre každý súbor to trvalo 1,88 sekundy, a bez použitia fsync — 0,06 sekundy.
  • Do príkazov pre prechádzanie vetvami, ako sú „git log“ a „git rev-list“, bola pridaná možnosť „--since-as-filter=X“, ktorá umožňuje filtrovať informácie o commitoch, ktorých dátum vytvorenia je starší ako „X“. Na rozdiel od možnosti „--since“ je nová príkazová vo forme filtra, ktorý ne zastaví precházenie po prvom commite, ktorý je starší než zadaný čas.
  • V príkaze „git remote“ s uvedením príznaku „-v“ je zabezpečený výstup informácií o čiastočných klonoch repozitára.
  • Pridané nastavenie „transfer.credentialsInUrl“, ktoré môže mať hodnoty „warn“, „die“ a „allow“. Ak sú v parametri „remote..url“ uvedené prihlasovacie údaje v čistom texte, pokus o vykonanie operácií „fetch“ alebo „push“ sa skončí chybou, ak je nastavenie „transfer.credentialsInUrl“ nastavené na „die“, alebo varovaním, ak je nastavené na „warn“.
  • Predvolene bola aktivovaná nová implementácia interaktívneho režimu príkazu „git add -i“, prepísaná z Perlu do C.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster