Git 2.37 šaltinio valdymo leidimas

Pristatomas paskirstytų šaltinių valdymo sistemos Git 2.37 leidimas. „Git“ yra viena populiariausių, patikimiausių ir našiausių versijų valdymo sistemų, teikiančių lanksčius nelinijinius kūrimo įrankius, pagrįstus šakų išsišakojimu ir sujungimu. Siekiant užtikrinti istorijos vientisumą ir atsparumą retroaktyviems pokyčiams, kiekviename įsipareigojime naudojamas numanomas visos ankstesnės istorijos maišymas, taip pat galima patikrinti atskiras žymas ir įsipareigojimus skaitmeniniais kūrėjų parašais.

Palyginti su ankstesne versija, į naująją versiją, parengtą dalyvaujant 395 kūrėjams, priimta 75 pakeitimų, iš kurių 20 kūrime dalyvavo pirmą kartą. Pagrindinės naujovės:

  • Dalinių indeksų mechanizmas (retas indeksas), apimantis tik dalį saugyklos, buvo paruoštas plačiam naudojimui. Daliniai indeksai gali pagerinti našumą ir sutaupyti vietos saugyklose, kurios atlieka dalinio klonavimo (retos patikros) operacijas arba dirba su nepilna saugyklos kopija. Naujasis leidimas užbaigia dalinių indeksų integravimą į git show, git sparse-checkout ir git stash komandas. Labiausiai pastebimas dalinių indeksų naudojimo pranašumas matomas naudojant komandą git stash, kurios vykdymo greitis kai kuriose situacijose padidėjo 80%.
  • Įdiegtas naujas „cruft packs“ mechanizmas, skirtas pakuoti nepasiekiamus objektus, kurie nėra nurodyti saugykloje (nerodomi šakomis ar žymomis). Nepasiekiami objektai yra ištrinami šiukšlių surinkėjo, tačiau tam tikrą laiką lieka saugykloje, kad būtų išvengta lenktynių sąlygų. Norint sekti nepasiekiamų objektų atsiradimo laikotarpį, būtina prie jų prisegti žymas su panašių objektų keitimo laiku, o tai neleidžia jų saugoti viename paketo faile, kuriame visi objektai turi bendrą keitimo laiką. Anksčiau kiekvieną objektą įrašant atskirame faile kildavo problemų, kai buvo daug naujų, nepasiekiamų objektų, kurie dar nebuvo tinkami ištrinti. Siūlomas „cruft paketų“ mechanizmas leidžia saugoti visus nepasiekiamus objektus viename paketo faile ir atspindėti kiekvieno objekto modifikavimo laiką atskiroje lentelėje, saugomoje faile su plėtiniu „.mtimes“.
  • „Windows“ ir „MacOS“ sistemoje yra įmontuotas failų sistemos pakeitimų stebėjimo mechanizmas, leidžiantis išvengti kartojimo visame darbiniame kataloge atliekant tokias operacijas kaip „git statusas“. Anksčiau, norint sekti pokyčius, per kabliukus buvo galima prijungti išorines paslaugas, skirtas FS pakeitimams sekti, pvz., Watchman, tačiau tam reikėjo įdiegti papildomas programas ir konfigūruoti. Dabar nurodyta funkcija yra integruota ir gali būti įjungta komanda „git config core.fsmonitor true“.
  • Komandoje „git sparse-checkout“ režimo „—cone“ alternatyvos, dalinio klonavimo šablonų apibrėžimo metodo, palaikymas buvo paskelbtas pasenusiu, o tai leidžia nustatant saugyklos dalį, kuriai taikoma klonavimo operacija, siekiant išvardyti atskirus failus naudojant „.gitignore“ sintaksę, kuri neleidžia naudoti dalinių indeksų optimizavimui.
  • Didesnis lankstumas konfigūruojant fsync() iškvietimą, kad pakeitimai būtų išplauti į diską. Parametras "core.fsyncMethod" buvo įtrauktas į "paketinę" sinchronizavimo strategiją, kuri leidžia pagreitinti darbą rašant daug atskirų failų kaupiant pakeitimus įrašymo talpykloje, kuri iš naujo nustatoma vienu fsync() skambinti. Testas, kurio metu buvo pridėta 500 failų naudojant komandą „git add“, buvo baigtas per 0.15 sekundės, kai buvo įjungtas naujas režimas, o fsync() iškvietimas kiekvienam failui užtruko 1.88 sekundės, o nenaudojant fsync - 0.06 sekundės.
  • Atšakų perėjimo komandos, pvz., „git log“ ir „git rev-list“, dabar turi parinktį „-since-as-filter=X“, kuri leidžia filtruoti informaciją apie senesnius nei „X“ įsipareigojimus. Skirtingai nuo parinkties „—nuo“, nauja komanda įgyvendinama kaip filtras, kuris nesustabdo paieškos po pirmojo, senesnio nei nurodyta laiko, įpareigojimo.
  • Komandoje „git remote“, nurodant „-v“ vėliavėlę, rodoma informacija apie dalinius saugyklos klonus.
  • Pridėtas „transfer.credentialsInUrl“ nustatymas, kuris gali turėti reikšmes „warn“, „die“ ir „allow“. Jei nurodyta parametre „remote. .url“ paprasto teksto kredencialus, bandymas atlikti „fetch“ arba „push“ operaciją nepavyks ir atsiras klaida, jei „transfer.credentialsInUrl“ nustatymas nustatytas į „mirti“ arba įspėjimas, jei nustatytas į „warn“.
  • Pagal numatytuosius nustatymus įjungtas naujas interaktyvus komandos „git add -i“ režimas, perrašytas iš „Perl“ į C.

Šaltinis: opennet.ru

Добавить комментарий