Vydanie ovládania zdroja Git 2.37

Bolo oznámené vydanie distribuovaného zdrojového riadiaceho systému 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é nelineárne vývojové nástroje založené na vetvení a zlučovaní. Na zabezpečenie integrity histórie a odolnosti voči retroaktívnym zmenám sa v každom commite používa implicitné hashovanie celej predchádzajúcej histórie, je tiež možné certifikovať jednotlivé tagy a commity digitálnymi podpismi vývojárov.

Oproti predchádzajúcemu vydaniu bolo do novej verzie, pripravovanej za účasti 395 vývojárov, prijatých 75 zmien, z ktorých 20 sa podieľalo na vývoji po prvýkrát. Hlavné inovácie:

  • Mechanizmus parciálnych indexov (riedky index), pokrývajúci len časť úložiska, bol pripravený na široké použitie. Čiastočné indexy môžu zlepšiť výkon a ušetriť miesto v úložiskách, ktoré vykonávajú operácie čiastočného klonovania (sparse-checkout) alebo pracujú s neúplnou kópiou úložiska. Nové vydanie dokončuje integráciu čiastočných indexov do príkazov git show, git sparse-checkout a git stash. Najvýraznejší výkonnostný prínos z používania čiastočných indexov sa prejavuje pri príkaze „git stash“, ktorý v niektorých situáciách zaznamenal 80% zvýšenie rýchlosti vykonávania.
  • Bol implementovaný nový mechanizmus „cruft packs“ na balenie nedostupných objektov, na ktoré sa v úložisku neodkazuje (neodkazujú sa na ne vetvy alebo značky). Nedosiahnuteľné objekty odstráni zberač odpadu, ale pred odstránením zostanú v úložisku určitý čas, aby sa predišlo rasovým podmienkam. Pre sledovanie periódy výskytu nedosiahnuteľných objektov je potrebné k nim pripevniť štítky s časom zmeny podobných objektov, čo neumožňuje ich uloženie do jedného balíkového súboru, v ktorom majú všetky objekty spoločný čas zmeny. Predtým viedlo ukladanie každého objektu do samostatného súboru k problémom, keď existovalo veľké množstvo nových, nedostupných objektov, ktoré ešte nebolo možné odstrániť. Navrhovaný mechanizmus „cruft packs“ vám umožňuje ukladať všetky nedostupné objekty do jedného súboru balíka a odrážať údaje o čase úpravy každého objektu v samostatnej tabuľke uloženej v súbore s príponou „.mtimes“.
  • Pre Windows a macOS je k dispozícii vstavaný mechanizmus na sledovanie zmien v súborovom systéme, ktorý vám umožňuje vyhnúť sa opakovaniu celého pracovného adresára pri vykonávaní operácií, ako je napríklad „stav git“. Predtým bolo možné na sledovanie zmien pripojiť externé nástroje na sledovanie zmien vo FS, ako napríklad Watchman, pomocou hákov, čo si však vyžadovalo inštaláciu ďalších programov a konfiguráciu. Teraz je špecifikovaná funkcionalita vstavaná a možno ju povoliť príkazom „git config core.fsmonitor true“.
  • V príkaze „git sparse-checkout“ bola podpora alternatívy k režimu „—cone“, metóda definovania šablón pre čiastočné klonovanie, vyhlásená za zastaranú, čo umožňuje pri určovaní časti úložiska, ktorá podlieha operáciu klonovania, vypísať jednotlivé súbory pomocou syntaxe „.gitignore“, ktorá neumožňuje použitie na optimalizáciu čiastočných indexov.
  • Zvýšená flexibilita pri konfigurácii volania fsync() na uloženie zmien na disk. Do parametra „core.fsyncMethod“ bola pridaná podpora pre „batch“ synchronizačnú stratégiu, ktorá umožňuje zrýchlenie práce pri zápise veľkého množstva jednotlivých súborov akumuláciou zmien vo vyrovnávacej pamäti spätného zápisu, ktorá je resetovaná jedinou funkciou fsync() hovor. Test, ktorého výsledkom bolo pridanie 500 súborov pomocou príkazu „git add“, bol dokončený za 0.15 sekundy, keď bol povolený nový režim, zatiaľ čo volanie fsync() trvalo 1.88 sekundy pre každý súbor a 0.06 sekundy bez použitia fsync .
  • Príkazy prechodu vetvy ako „git log“ a „git rev-list“ majú teraz možnosť „-since-as-filter=X“, ktorá vám umožňuje odfiltrovať informácie o odovzdaniach, ktoré sú staršie ako „X“. Na rozdiel od voľby „—od“ je nový príkaz implementovaný ako filter, ktorý nezastaví vyhľadávanie po prvom odovzdaní staršom ako zadaný čas.
  • V príkaze „git remote“ sa pri zadaní príznaku „-v“ zobrazia informácie o čiastočných klonoch úložiska.
  • Pridané nastavenie „transfer.credentialsInUrl“, ktoré môže nadobúdať hodnoty „warn“, „die“ a „allow“. Ak je to uvedené v parametri „remote. .url" prihlasovacie údaje s obyčajným textom, pokus o vykonanie operácie "načítanie" alebo "zatlačenie" zlyhá s chybou, ak je nastavenie "transfer.credentialsInUrl" nastavené na "zomrieť", alebo s varovaním, ak je nastavené na "varovať".
  • Štandardne je povolená nová implementácia interaktívneho režimu príkazu „git add -i“, prepísaného z Perlu do C.

Zdroj: opennet.ru

Pridať komentár