Git 2.39 šaltinio valdymo leidimas

Po dviejų mėnesių kūrimo buvo išleista paskirstytų šaltinių valdymo sistema Git 2.39. Git yra viena populiariausių, patikimiausių ir našiausių versijų valdymo sistemų, teikianti lanksčius nelinijinius kūrimo įrankius, pagrįstus šakojimu ir sujungimu. Siekiant užtikrinti istorijos vientisumą ir atsparumą retroaktyviems pokyčiams, kiekviename įsipareigojime naudojama netiesioginė visos ankstesnės istorijos maiša, taip pat galima sertifikuoti atskiras žymas ir įsipareigojimus skaitmeniniais kūrėjų parašais.

Palyginti su ankstesne versija, naujojoje versijoje buvo 483 pakeitimai, parengti dalyvaujant 86 kūrėjams, iš kurių 31 kūrime dalyvavo pirmą kartą. Pagrindinės naujovės:

  • Komanda „git shortlog“, skirta rodyti suvestines su statistiniais duomenimis iš pakeitimų istorijos, pridėjo parinktį „-group“, kad būtų galima savavališkai sugrupuoti įsipareigojimus pagal laukus, neapsiribojant autoriumi ar įsipareigojimu. Pavyzdžiui, norėdami parodyti kūrėjų sąrašą su informacija apie pakeitimų skaičių, atsižvelgiant į pagalbininkus, nurodytus lauke „Bendraautoris“, galite naudoti komandą: git shortlog -ns --group=author - -grupė=priekaba:bendraautoris

    Trumpojo žurnalo išvestis gali būti apibendrinta naudojant formatavimo specifikacijas, o parinktis „--group“ gali žymiai supaprastinti sudėtingų ataskaitų kūrimą ir pašalinti papildomų rūšiavimo komandų poreikį. Pavyzdžiui, norėdami sukurti ataskaitą su informacija apie tai, kiek tam tikros laidos įsipareigojimų buvo priimta per kiekvieną mėnesį, galite nurodyti: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Anksčiau panašiai operacijai atlikti būtų reikėję naudoti rūšiavimo ir unikalias priemones: git log v2.38.0. .. —data='formatas:%Y -%m' —format='%cd' | rūšiuoti | unikalus -c

  • Išplėtotos „Cruft paketų“ mechanizmo, skirto pakuoti nepasiekiamus objektus, kurie nėra nuorodų saugykloje (nerodomi šakomis ar žymomis), galimybės. Nepasiekiami objektai yra ištrinami šiukšlių surinkėjo, tačiau tam tikrą laiką lieka saugykloje, kad būtų išvengta lenktynių sąlygų. „Cruft packs“ mechanizmas leidžia saugoti visus nepasiekiamus objektus viename paketo faile, o duomenis apie kiekvieno objekto modifikavimo laiką rodyti atskiroje lentelėje, saugomoje atskirame faile su plėtiniu „.mtimes“, kad jie tai padarytų. nesutampa su visu modifikavimo laiku.

    Laikas, per kurį nepasiekiami objektai lieka saugykloje, kol jie iš tikrųjų ištrinami, nustatomas pagal parinktį „—prune=“ “ Tačiau, nors delsimas prieš ištrynimą yra gana efektyvus ir praktiškas būdas užkirsti kelią saugyklos korupcijai dėl lenktynių sąlygų, jis nėra 100% patikimas. Kad būtų lengviau atkurti sugadintą saugyklą, nauja versija suteikia galimybę išsaugoti trūkstamus objektus, pridedant parinktį „--expire-to“ prie komandos „git repack“, kuri leidžia nurodyti failą išoriniam failui sukurti. visų ištrintų objektų kopija. Pavyzdžiui, norėdami išsaugoti nepasiekiamus objektus, kurie nepasikeitė per paskutines 5 minutes faile backup.git, galite naudoti komandą: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Žymiai padidino (iki 70%) operacijos "git grep -cached" greitį ieškant srityse, kuriose naudojamas dalinis klonavimas (sparse-checkout) ir kurioms yra daliniai indeksai (sparse index). Anksčiau, nurodant parinktį „-cached“, paieška pirmiausia buvo atliekama įprastoje rodyklėje, o po to dalinėje, o tai lėmė pastebimą vėlavimą ieškant didelėse saugyklose.
  • Paspartintas serverio naujų objektų suderinamumo patikrinimas prieš juos dedant į saugyklą atliekant „git push“ operaciją. Perėjus į tik deklaruotų nuorodų apskaitą tikrinant, bandymų saugykloje, kurioje yra 7 milijonai nuorodų, iš kurių tik 3% apima „push“ operacija, atlikti optimizavimai leido sutrumpinti tikrinimo laiką 4.5 karto.
  • Siekiant apsisaugoti nuo galimo sveikųjų skaičių perpildymo kode, komanda „git apply“ riboja maksimalų apdorojamų pataisų dydį. Jei pataisos dydis viršija 1 GB, dabar bus rodoma klaida.
  • Siekiant apsisaugoti nuo galimų pažeidžiamumų, buvo atlikti pakeitimai, siekiant išvalyti nereikalingą informaciją iš antraštių, nustatytų naudojant h2h3 modulį su GIT_TRACE_CURL=1 arba GIT_CURL_VERBOSE=1 parinktimi kartu su HTTP/2.
  • Atliekant patikrinimą filiale, kuri yra simbolinė nuoroda į kitą šaką, komanda „git symbolic-ref HEAD“ dabar rodo tikslinės šakos pavadinimą, o ne simbolinės nuorodos pavadinimą.
  • Pridėtas argumento @{-1} palaikymas prie parinkties „--edit-description“ („git branch —edit-description @{-1}“), skirta redaguoti ankstesnės šakos aprašą.
  • Pridėta komanda „git merge-tree --stdin“, kad per standartinę įvestį būtų pateiktas parinkčių sąrašas.
  • Tinklo failų sistemose fsmonitor tvarkyklė, kuri stebi failų sistemos pokyčius, pagal numatytuosius nustatymus yra išjungta.

Šaltinis: opennet.ru

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