Git 2.37 väljalase

Esitati käibel jaotatud lähtefailide haldamise süsteemi Git 2.37. Git on üks populaarsemaid, usaldusväärsemaid ja kõrge jõudlusega versioonihaldussüsteeme, mis pakub paindlikke mittelineaarse arenduse vahendeid, mis põhinevad harude ja ühenduste loomisel. Ajaloo terviklikkuse tagamiseks ja muude muudatuste resistentsuse tagamiseks kasutatakse kõigi varasemate ajaloode vaikimisi hash-koodimist igas commit'is, samuti on võimalik arendajate digitaalse allkirjaga kinnitada üksikute sildide ja commit'ide autentsust.

Võrreldes eelmise versiooniga on uues versioonis rakendatud 395 muudatust, mille ette valmistas 75 arendajat, kellest 20 osaleb arengus esmakordselt. Peamised uuendused:

  • Poolikute indeksite (sparse index) mehhanism on viidud valmis laialdaseks kasutamiseks, hõlmates vaid osa hoidlast. Poolikud indeksid võimaldavad suurendada jõudlust ja säästa ruumi hoidlates, kus viiakse läbi osalisi kloonimise (sparse-checkout) operatsioone või töötatakse mittetäieliku hoidla koopia üle. Uues versioonis lõpetati töö poolikute indeksite integreerimise kallal käsklustesse „git show“, „git sparse-checkout“ ja „git stash“. Kõige märgatavam kasu jõudlusest, mis tuleneb poolikute indeksite kasutamisest, on täheldatud käsus „git stash“, mille täitmise kiirus on mõnel juhul tõusnud 80%.
  • Rakendatud on uus mehhanism "cruft packs" jõudmatu objektide (unreachable) pakkimiseks, millele hoidlas puuduvad lingid (harud ega sildid ei viita neile). Jõudmatu objektid eemaldatakse prügikogujaga, kuid enne eemaldamist jäävad nad teatud ajaks hoidlasse, et vältida võidujooksu olukordi. Jõudmatu objektide jälgimise perioodi jälgimiseks on vajalik nende sidumine muudatuste ajamärkidega, mis ei luba neid hoida ühes pack-failis, kus kõik objektid jagavad sama muudatuste aega. Varem kasutatud iga objekti salvestamine eraldi faili põhjustas probleeme, kui oli palju uusi jõudmatu objekte, mis veel ei olnud eemaldamise alla kuuluvad. Pakutud mehhanism "cruft packs" võimaldab kõik jõudmatu objektid hoida ühes pack-failis, ning iga objekti muudatusaja andmeid kajastavad eraldi tabelis, mis hoitakse failis laiendiga ".mtimes".
  • Windowsi ja macOS-i jaoks on rakendatud sisseehitatud failisüsteemi muudatuste jälgimise mehhanism, mis võimaldab vältida kogu töökausta läbimist selliste toimingute nagu "git status" teostamisel. Varem võis muudatuste jälgimise kaudu hook'ide abil kasutada väliseid utiliite nagu Watchman, kuid see nõudis täiendavate programmide installimist ja seadistamist. Nüüd on see funktsionaalsus sisseehitatud ja selle aktiveerimiseks võib kasutada käsku "git config core.fsmonitor true".
  • Käskluses "git sparse-checkout" on alternatiivse režiimi "—cone" toetamine kuulutatud aegunuks, mis võimaldas mustrite määratlemisel osalist kloonimist, et nimetada kloonimise toimingutesse kuuluvad eraldi failid, kasutades " .gitignore" süntaksit, mis ei võimalda kasutada osalisi indekseid optimeerimise jaoks.
  • Suurendatud paindlikkust fsync() kutsumise seadistamiseks andmete salvestamiseks kettale. Parameetrisse „core.fsyncMethod“ on lisatud toetuse strateegia sünkroniseerimisele „batch“, mis võimaldab kiirendada töötlust suure hulga eraldi failide kirjutamisel, akumuleerides muudatusi tagasi kirjutamise vahemälles, mis värskendatakse ühe fsync() kutsumisega. Teostatud test, kus käsuga „git add“ lisati 500 faili, nõudis uue režiimi sisselülitamisel 0,15 sekundit, samas kui iga faili jaoks fsync() kutsumiseks kulus 1,88 sekundit, ja ilma fsyncita — 0,06 sekundit.
  • Harude sirvimise käskudesse, nagu „git log“ ja „git rev-list“, on lisatud võimalus „--since-as-filter=X“, mis võimaldab filtreerida teavet komiteede kohta, mille loomise aeg on vanem kui „X“. Erinevalt valikust „--since“ on uus käsk rakendatud filtrina, mis ei peata läbimist pärast esimest komiteed, mis on vanem määratud ajast.
  • Käsus „git remote“, kui lipu „-v“ kasutamine näitab teavet osaliste kloonide kohta.
  • Lisatud seadistus „transfer.credentialsInUrl“, mis võib vastu võtta väärtusi „warn“, „die“ ja „allow“. Kui parameetris „remote..url“ on esitatud mandaadid avatud tekstina, lõpeb katsed „fetch“ või „push“ teostada veaga, kui seadistus „transfer.credentialsInUrl“ on määratud väärtusele „die“, või hoiatusega, kui väärtus on „warn“.
  • Vaikimisi on käivitatud uus interaktiivse režiimi rakendus käsule „git add -i“, mis on kirjutatud Perlilt C keelele.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster