Väljalase Git 2.37 koodihaldussüsteemist

Esitletakse jaotatud lähtekoodihalduse süsteemi Git 2.37. Git on üks populaarsemaid, usaldusväärsemaid ja suure jõudlusega versioonihalduse süsteeme, mis pakub paindlikke mittejoonelise arenduse vahendeid, tuginedes harude ja harude liitmisele. Ajaloo terviklikkuse ja tagasiviidud muudatuste kaitsmiseks kasutatakse iga versioonikontrollimise korral mitteavalikku räsimist kogu eelneva ajaloo kohta, samuti on võimalik eraldi silti ja versioone digitaalsete allkirjadega kinnitada.

Võrreldes eelmise väljaandega on uue versiooni juurde lisatud 395 muudatust, mille on ette valmistanud 75 arendajat, kellest 20 osaleb arenduses esmakordselt. Peamised uuendused:

  • Valmis on saanud osaliste indeksite (sparse index) mehhanism, mis katab vaid osa hoidlast. Osalised indeksid suurendavad jõudlust ja säästavad ruumi hoidlates, kus tehakse osade kloonimise (sparse-checkout) operatsioone või töötatakse mittetäieliku hoidla koopia järgi. Uues väljaandes on lõpule viidud osaliste indeksite integreerimine käskudesse «git show», «git sparse-checkout» ja «git stash». Kõige silmatorkavam jõudluse paranemine osaliste indeksite kasutamisel on nähtav käsus «git stash», mille täitmise kiirus on teatud olukordades suurenenud 80%.
  • Rakendatud on uus mehhanism «cruft packs» jõudmatute objektide (unreachable) pakkimiseks, millele hoidlates puuduvad viidatud (millele ei viita oksad või sildid). Jõudmatud objektid eemaldatakse prügikorjajate poolt, kuid enne kustutamist jäävad nad ajutiselt hoidlatele, et vältida võistluse (race condition) olukordi. Jõudmatute objektide oleku jälgimiseks peab olema seotud nende muutmise aeg, mis ei võimalda neid hoida ühes pakkefailis, kus kõik objektid jagavad sama muutmise aega. Varasem meetod igasuguste objektide hoidmiseks eraldi failides põhjustas probleeme, kui suur hulk uusi jõudmatuid objekte ei olnud veel kustutamise faasis. Pakutud mehhanism «cruft packs» võimaldab hoida kõik jõudmatud objektid ühes pakkefailis, samas kui iga objekti muutmise andmed kajastatakse eraldi tabelis, mis on salvestatud failis laiendiga «.mtimes».
  • Windowsi ja macOS-i jaoks on rakendatud sisseehitatud failisüsteemi muutuste jälgimise mehhanism, mis võimaldab vältida kogu töökatalooge skannimist selliste toimingute, nagu «git status», täitmisel. Varasemalt sai muudatuste jälgimiseks hook-ide kaudu kasutada väliseid failisüsteemi muutuste jälgimise utiliite nagu Watchman, kuid see nõudis lisaprogrammide installimist ja seadistamist. Nüüd on see funktsionaalsus sisseehitatud ja seda saab aktiveerida käsuga «git config core.fsmonitor true».
  • Käsk «git sparse-checkout» on kuulutatud aegunuks, toetades alternatiivset režiimi «—cone» mustrite määramiseks osaliseks kloonimiseks, mis võimaldab määrata kloonimiseks sobiva osa hoidlast, loetledes eraldi faile, kasutades «.gitignore» süntaksit, mis ei luba osaliste indeksite optimeerimist.
  • Suurenenud on fsync() kutsumise kohandamise paindlikkus muudatuste salvestamiseks kettale. Parameetrisse «core.fsyncMethod» on lisatud toetuse strateegia «batch», mis võimaldab kiirendada toimingut, kui kirjutatakse suur hulk eraldi faile, kogudes muudatused tagasisidesse, mis salvestatakse ühe fsync() kutsega. Test, mille käigus käsku «git add» lisati 500 faili, viidi uue režiimi korral läbi 0,15 sekundi jooksul, samas kui iga faili puhul fsync() kutse tegemiseks kulus 1,88 sekundit, ja ilma fsynci kasutamiseta 0,06 sekundit.
  • Harude läbimise käskudesse, nagu «git log» ja «git rev-list», on lisatud valik «—since-as-filter=X», mis võimaldab filtreerida teavet commitide kohta, mille loomisaeg on vanem kui «X». Erinevalt valikust «—since» on uus käsk realiseeritud filtrina, mis ei peata läbimist pärast esimest commitit, mille vanus ületab antud aja.
  • Käsk «git remote» tagab lipu «-v» kasutamisel teavet osaliste kloonide kohta.
  • Lisatud seadistus „transfer.credentialsInUrl“, mis võib võtta väärtusi „warn“, „die“ ja „allow“. Kui parameetris „remote.<name>.url“ esitatakse mandaadid avatud tekstina, siis katse teostada „fetch“ või „push“ operatsioone lõpetatakse vea tõttu, kui seadistus „transfer.credentialsInUrl“ on seadistatud väärtusele „die“, või hoiatusega, kui see on seadistatud väärtusele „warn“.
  • Vaikimisi on kasutusele võetud uus interaktiivse režiimi rakendamine käsule „git add -i“, mis on kirjutatud ümber Perl'ist C-sse.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster