Esitati sĂŒsteemi juhtimise allika koodide Git 2.56 versioon. Git'i kood levib GPLv2+ litsentsi alusel. Uude versiooni on lisatud 748 muudatust, mille on teinud 104 arendajat, kellest 39 osaleb Git'i arenduses esmakordselt. Peamised uuendused (1, 2, 3):
- Lisatud reĆŸiim âgit add âresolvedâ konfliktide lahendamiseks, mis kontrollib faile konfliktimarkeeride olemasolu osas ja palub, kui vĂ€hemalt ĂŒhes failis on leitud mĂ€rk, tehes vigade teate, indekseerimata ĂŒhtegi faili ja pakkudes nimekirja failidest, mis vajavad parandamist. Erinevalt kĂ€sust âgit add âupdateâ töödeldakse uues reĆŸiimis ainult konflikti olekus olevaid faile, samas kui konflikti mittekuuluvad muudetud failid jĂ€etakse tĂ€helepanuta, mis vĂ”imaldab ohutult lĂ”ppeda harude liitmisega, isegi kui töökaustas on teisi lĂ”petamata muudatusi (kĂ€sk âgit add âupdateâ lisab indeksisse kĂ”ik eelnevalt Ă€ra tuntud muudetud failid töökaustas).
- Töötamine suurte hoidlate puhul on mĂ€rgatavalt kiirem, kuna on optimeeritud algoritmi viimaste ĂŒhiste kinnituste otsimiseks harude liitmisel ja kinnituste vĂ”rdlemisel. Töö kĂ€igus arvestatakse nĂŒĂŒd kinnitusi, mis kuuluvad ainult ĂŒhele harule, mis vĂ”imaldab skaneerimise koheselt peatada, kui kĂ”ik vĂ”imalikud ĂŒhised eelkĂ€ijad on tuvastatud, raiskamata aega tĂ€iendaval muutuste ajaloos. Ăhes testitud hoidlas suurenes otsimiskiirus keskmiselt 20 korda, teises saavutati kiirus 70 korda. KĂ€su âgit merge-base âall v4.8 v4.9â tĂ€itmisel Linuxi tuumaga hoidlas vĂ€henes ĂŒletamise samme 167 000-lt 3,8 tuhandele.
- Serverikasutuseks kohandatud reĆŸiim ââpath-walkâ, mis vĂ”imaldab luua kompaktsemaid pack-faile, grupeerides objekte nende teede jĂ€rgi kaustade puus (nĂ€iteks hoolduses Fluent UI vĂ€hendas ââpath-walkâ kasutamine pack-faili suurust 558 MB-lt 164 MB-le). Uues versioonis on rakendatud vĂ”imalus kasutada reĆŸiimi ââpath-walkâ koos kĂ€ttesaadavuse bitmapsidega ja delta saartega, mida git-majutajad kasutavad töötamise kiirendamiseks ja forkte peamise hoidla isolatsiooni tagamiseks.
- Eemaldatud kitsaskohad, mis pÔhjustasid liigseid arvutusi suurtes hoidlates: eemaldatud liigsed failide oleku kontrollid reftable'i kirjutamisel; vÀlistatud uuesti skaneerimine nimekirja igakordsel uue pakifaili lisamisel; kiirendatud reftable'i operatsioonid, kus on palju kustutamise kirjeid; optimeeritud 'git diff' töö, kui failiteede piirangud on mÀÀratud. PÀrast optimeerimist on reftable'i töö suures kustutamisel kiirenud 65 korda (13 sekundilt 0.2 sekundini), ja probleemse kÀsu 'git diff' kÀitamine Chromiumi hoidlas, mille indeksis on 500000 elementi, vÔtab aega 0.07 sekundit, mitte 8 minutit.
- Eksperimentaalsesse 'git history' meeskonda, mis pakub vĂ”imalusi muudatuste ajaloos ĂŒmberkirjutamiseks, on lisatud kĂ€sk 'git history drop', et eemaldada valitud commit, automaatselt sidudes selle jĂ€reltulijad vanemkomitiga.
- Lisatud kĂ€sk 'git branch --delete-merged âorigin/*â âtopic-*â' ohutuks rĂŒhmade kohalike harude kustutamiseks, mille muudatused on juba edastatud vĂ€lisesse hoidlasse. Harude ja hoidlate filtreerimiseks on lubatud kasutada mustreid. Kustutamise kandidaate analĂŒĂŒsimiseks, ilma toimingu tegeliku teostamiseta, saab kasutada lippu '--dry-run'.
- Lisatud kĂ€sk 'git refs create|update|delete|rename', mis ĂŒhendab madalama taseme toimingud linkide loomisel, kustutamisel, ĂŒmbernimetamisel ja vĂ€rskendamisel.
- KÀsku 'git bisect run' on lisatud valik '--reset-when-found=[]', mis tagastab automaatselt hoidla seisundisse, mis oli enne otsingu algust, vÔi jÀtab aktiivseks probleemse commit'i, ilma et oleks vaja eraldi kÀivitada kÀsku 'git bisect reset'.
- KÀsku 'git replay' on lisatud lipp '--linearize' tasapinnalise sulandumise topoloogia kasutamiseks, sarnaselt 'git rebase --no-rebase-merges'-le, kuid ilma tööpuu juurde pöördumata.
- KĂ€sk 'git log --follow' on teostatud failinimede jĂ€lgimine mittelineaarses muudatuste ajaloos, nĂ€iteks alamsulgude sulandumisel. Failitee kinnitatakse nĂŒĂŒd eraldi iga vanemkomiti jaoks, muutes tulemuse sĂ”ltumatuks commit'ite ajaloost lĂ€bimise jĂ€rjekorrast.
- Lisatud on vĂ”imalus kasutada kĂ€sku «git repack -a âfilter=blob:limit=1m âdrop-filtered» suurte blob-objektide eemaldamiseks, mis on laaditud on-demand vĂ€listest hoidlatest ja mida ei kasutata praeguses indeksis. Nende objektide juurde pöördudes laaditakse need automaatselt uuesti.
- KĂ€sku «git log âgraph» on tĂ€iendatud mitme sĂ”ltumatu juurega graafide jaoks, et visuaalselt eraldada omavahel seotud commit'e.
- Tagatud on tĂŒĂŒpiliste trĂŒkivigade tuvastamine, nagu nĂ€iteks «git push origin/main» asemel «git push origin main» vĂ”i «git branch âset-upstream-to origin main» asemel «git branch âset-upstream-to=origin/main», ning antakse soovitus kasutamiseks Ă”ige versioon.
Allikas: opennet.ru
