Teatati hajutatud allika juhtimissüsteemi Git 2.37 väljalaskmisest. Git on üks populaarsemaid, usaldusväärsemaid ja suure jõudlusega versioonikontrollisüsteeme, mis pakub paindlikke mittelineaarseid arendustööriistu, mis põhinevad hargnemisel ja ühendamisel. Tagamaks ajaloo terviklikkust ja vastupanuvõimet tagasiulatuvatele muudatustele, kasutatakse iga commit puhul kogu eelneva ajaloo kaudset räsimist, samuti on võimalik üksikuid silte ja kohustusi sertifitseerida arendajate digiallkirjadega.
Võrreldes eelmise versiooniga võeti 395 arendaja osalusel koostatud uude versiooni vastu 75 muudatust, millest 20 osalesid arenduses esmakordselt. Peamised uuendused:
- Osaliste indeksite mehhanism (hõre indeks), mis hõlmab ainult osa hoidlast, on viidud laialdaseks kasutamiseks valmis. Osalised indeksid võivad parandada jõudlust ja säästa ruumi hoidlates, mis teostavad osalist kloonimise (hõreda väljaregistreerimise) toiminguid või töötavad hoidla mittetäieliku koopiaga. Uus väljalase viib lõpule osaliste indeksite integreerimise käskudesse git show, git sparse-checkout ja git stash. Osaliste indeksite kasutamisest tuleneb kõige märgatavam jõudluskasu git stash käsuga, mille täitmiskiirus on mõnes olukorras kasvanud 80%.
- Juurdepääsmatute objektide pakkimiseks, millele hoidlas ei viidata (ei viidata harude ega siltide kaudu), on juurutatud uus mehhanism. Prügikorjaja kustutab kättesaamatud objektid, kuid jäävad enne kustutamist teatud ajaks hoidlasse, et vältida võistlusolusid. Kättesaamatute objektide esinemisperioodi jälgimiseks on vaja neile lisada sildid sarnaste objektide muutumise ajaga, mis ei võimalda neid salvestada ühte pakifaili, milles kõigil objektidel on ühine vahetusaeg. Varem põhjustas iga objekti eraldi faili salvestamine probleeme, kui oli palju värskeid, ligipääsmatuid objekte, mis ei olnud veel kustutamiseks sobivad. Kavandatav nn kruusapakkide mehhanism võimaldab salvestada kõik kättesaamatud objektid ühte pakifaili ja kajastada andmeid iga objekti muutmisaja kohta eraldi tabelis, mis on salvestatud laiendiga .mtimes faili.
- Windowsi ja macOS-i jaoks on failisüsteemi muudatuste jälgimiseks sisseehitatud mehhanism, mis võimaldab teil vältida itereerimist kogu töökataloogis, kui sooritate selliseid toiminguid nagu "git status". Varem sai muudatuste jälgimiseks konksude kaudu ühendada väliseid utiliite FS-i muudatuste jälgimiseks, näiteks Watchman, kuid see nõudis lisaprogrammide installimist ja konfigureerimist. Nüüd on määratud funktsionaalsus sisse ehitatud ja seda saab lubada käsuga “git config core.fsmonitor true”.
- Käskluses “git sparse-checkout” on režiimi “—cone” alternatiivi tugi, mis on osalise kloonimise mallide määratlemise meetod, kuulutatud aegunuks, mis võimaldab hoidla osa kindlaksmääramisel, mille suhtes kohaldatakse kloonimine, et loetleda üksikud failid, kasutades süntaksit „.gitignore”, mis ei võimalda kasutada osaindeksite optimeerimiseks.
- Suurem paindlikkus fsync() kutse konfigureerimisel muudatuste kettale loputamiseks. Parameetrile "core.fsyncMethod" on lisatud "partii" sünkroonimisstrateegia tugi, mis võimaldab kiirendada tööd suure hulga üksikute failide kirjutamisel, kogudes muudatusi tagasikirjutamise vahemällu, mis lähtestab ühe fsync() abil. helistama. Test, mille tulemusel lisati käsuga “git add” 500 faili, viidi uue režiimi lubamisel lõpule 0.15 sekundiga, samas kui fsync() kutsumine võttis iga faili kohta 1.88 sekundit ja ilma fsynci kasutamata 0.06 sekundit.
- Haru läbimise käskudel, nagu “git log” ja “git rev-list”, on nüüd suvand “-since-as-filter=X”, mis võimaldab teil filtreerida teavet kohustuste kohta, mis on vanemad kui “X”. Erinevalt suvandist "—sine" rakendatakse uut käsku filtrina, mis ei peata otsingut pärast esimest määratud ajast vanemat sissekandmist.
- Käskluses “git remote” kuvatakse lipu “-v” määramisel teave hoidla osaliste kloonide kohta.
- Lisatud säte "transfer.credentialsInUrl", mis võib võtta väärtused "warn", "die" ja "allow". Kui see on määratud parameetris „remote. .url lihtteksti mandaadid, "tõmbamise" või "tõuke" toimingu sooritamise katse nurjub veaga, kui sätte "transfer.credentialsInUrl" väärtuseks on määratud "die" või hoiatus, kui seadeks on määratud "hoiata".
- Vaikimisi on lubatud käsu "git add -i" interaktiivse režiimi uus rakendus, mis on ümber kirjutatud Perlist C-ks.
Allikas: opennet.ru
