Vydanie systému správy zdrojových textov Git 2.48

Uverejnené vydanie distribuovaného systému správy zdrojových textov Git 2.48. Git sa vyznačuje vysokou výkonnosťou a poskytuje prostriedky pre nelinárny vývoj založený na vetvení a spájaní vetiev. Na zabezpečenie integrity histórie a odolnosti voči zmenám „spätnou platnosťou“ sa používa implicitné hashovanie celej predchádzajúcej histórie v každom commite, ako aj overenie digitálnymi podpismi vývojárov jednotlivých tagov a commitov. Kód Git je distribuovaný pod licenciou GPLv2+.

V porovnaní s predchádzajúcim vydaním bola do novej verzie pridaná 605 zmien, ktoré pripravilo 93 vývojárov, z ktorých 35 sa podieľa na vývoji po prvýkrát. Hlavné novinky:

  • Realizovaná bola možnosť zostavovania pomocou systému zostavovania Meson, okrem GNU Make a CMake. Na zostavenie Git teraz možno použiť príkaz „meson setup build && ninja -C build“. Upozorňuje sa, že Makefile, ktorý sa používa pri použití GNU Make, narástol na 3887 riadkov a nie je už tak jednoduchý, ako by sa možno želalo. Nástroj Meson zjednodušuje prácu so systémom zostavovania, je pohodlný pre multiplatformové zostavy a robí zostavovanie prístupnejším pre začiatočníkov alebo vývojárov, ktorí nemajú skúsenosti s utilitou Make. Podporu Make a CMake sa v dohľadnej budúcnosti neplánuje ukončiť.
  • Boli pridané možnosti zostavenia, ktoré umožňujú používať alternatívne implementácie hashovania SHA-1 pri výpočte kontrolných súm, ktoré sa používajú na overenie integrity blokov dát v pack-súboroch. Výkon výpočtu kontrolných súm je veľmi dôležitý, napríklad na ich výpočet pri klonovaní repozitára s jadrom Linux sa minie približne 78% procesorového času. Použitá predvolená implementácia zahŕňa dodatočné kontroly kolízií a ochranu pred útokmi na SHA-1, ako sú SHAttered a Shambles. Takáto ochrana, ktorá spotrebúva dodatočné zdroje, má zmysel len pri použití SHA-1 na kryptografické účely a je nepoužiteľná pri overovaní integrity indexových dát.

    Na zostavenie Git s rýchlejšou implementáciou SHA-1, ktorá nie je vhodná pre kryptosystémy, bola navrhnutá séria možností *_UNSAFE, napríklad „OPENSSL_SHA1_UNSAFE“. Na GitHub zostavenie s jednoduchším SHA-1 umožnilo zvýšiť výkon operácií zisťovania a klonovania dát o 10-13%.

  • Pridala sa možnosť používať v príkaze „range-diff“ voľbu „—remerge-diff“, ktorá umožňuje zobraziť rozdiely medzi celkovým výsledkom zlúčenia a faktickými dátami, ktoré sú odrážané v commite po spracovaní príkazu „merge“. Pri použití možnosti „—remerge-diff“ sa rozdiely medzi riešeniami konfliktov nesegmentujú pre každú rodičovskú vetvu, ale zobrazujú sa celkové rozdiely medzi súborom, ktorý má konflikty zlúčenia, a súborom, v ktorom sú konflikty vyriešené. V kontexte príkazu „range-diff“ môže byť nová voľba užitočná na porovnávanie sád commitov po presune sekvencie commitov príkazom „rebase“ s možnosťou „—rebase-merges“.
  • Pridala sa možnosť spustiť súbor testov Git s povolením režimu identifikácie únikov pamäte. Pretože git poskytuje nástroje, ktoré sa ukončia po vykonaní vyžiadanej funkcie, úniky pamäte sa predtým nepovažovali za veľký problém. Nevyhnutnosť úplného odstránenia únikov pamäte sa stala aktuálnou po začiatku práce na presune vnútornej funkčnosti do samostatnej knižnice, ktorá môže byť nasadená v dlhodobo bežiacich procesoch.
  • Začalo sa vytváranie zoznamu zastaraných režimov a funkcií, ktorých podporu plánujú ukončiť v budúcnosti. Predpokladá sa, že odstránenie zastaranej funkčnosti nastane vo verzii Git 3.0, ktorá prinesie zmeny narušujúce spätnú kompatibilitu.
  • Pokračovala optimalizácia práce príkazu „git for-each-ref“, ktorý vypisuje zoznam odkazov v repozitári. Optimalizácia, kombinujúca spracovateľov na filtrovanie odkazov a formátovanie výstupu, sa teraz uplatňuje nielen pre neusporiadaný výstup, ale aj pri zadávaní možnosti „—sort“.
  • Vylepšená implementácia backendu „reftable“ s blokovým úložiskom pre efektívne ukladanie odkazov na vetvy a tagy v repozitári. Reftable výrazne zrýchľuje vyhľadávanie, čítanie a zápis v repozitároch s veľmi veľkým počtom odkazov. V novej verzii bolo zastavené volanie niektorých pomocných API pre ďalšie vylúčenie knižnice libgit z počtu závislostí pri zostavovaní. Realizovaná adaptívna správa chýb, ktoré vracajú funkcie prideľovania pamäte (nedostatok pamäte teraz nevedie k havárii). Zrýchlené operácie vytvárania odkazov a znížená spotreba pamäte.
  • V implementácii čiastočného klonovania boli vyriešené problémy, ktoré viedli k cykleniu a poškodeniu repozitára po vykonaní príkazu „git gc“.
  • Pri vykonaní príkazu „git fetch “ v prípade, že na lokálnom systéme chýba „refs/remotes//HEAD“ a na druhej strane existuje vetva, na ktorú sa odkazuje HEAD, je „refs/remotes//HEAD“ teraz presmerované na túto vetvu. Na správu synchronizácie „refs/remotes//HEAD“ so hodnotou HEAD na druhej strane spojenia bola pridaná nastavenie remote..followRemoteHEAD.
  • Pridané nastavenie „remote..serverOption“, podobné príkazovej možnosti „--serverOption=“.
  • V príkaze „git rebase --rebase-merges“ sa pokiaľ je to možné zabezpečuje používanie názvov vetiev ako štítkov.
  • Do príkazov ‘git notes add’ a ‘git notes append’ bol pridaný prepínač ‘-e’, ktorý otvorí poznámku v externom textovom editore uvedenom prostredníctvom premennej prostredia GIT_EDITOR.
  • Vylepšená kompatibilita s GCC 15 a štandardom C23.
  • Podpora pre staré verzie libcURL a Perl bola ukončená.

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