Saadaval on hajutatud lĂ€htekoodihaldussĂŒsteemi Git 2.31 vĂ€ljalase. Git on ĂŒks populaarsemaid, töökindlamaid ja suure jĂ”udlusega versioonihaldussĂŒsteeme, mis pakub paindlikke mittelineaarse arenduse vĂ”imalusi, tuginedes harude loomisele ja ĂŒhendamisele. Ajaloo tervikluse ning tagantjĂ€rele tehtud muudatuste suhtes vastupidavuse tagamiseks kasutatakse iga commit'i puhul kogu varasema ajaloo kaudset rĂ€simist; lisaks on vĂ”imalik kinnitada ĂŒksikuid tage ja commit'e arendajate digitaalallkirjadega.
VÔrreldes eelmise vÀljalaskega on uude versiooni lisatud 679 muudatust, mille valmimisse panustas 85 arendajat, neist 23 osales arenduses esimest korda. Peamised uuendused:
- Lisatud on kĂ€sk «git maintenance», mis vĂ”imaldab teha perioodilisi hooldustoiminguid sĂŒsteemides, mis ei toeta cron'i. NĂ€iteks saab uue kĂ€su abil korraldada repositooriumi pakkimisprotsessi perioodilise kĂ€ivitamise, et mitte oodata repositooriumi lukustuse lĂ”ppemist olukorras, kus pakkimine kĂ€ivitatakse automaatselt erinevate kĂ€skude tĂ€itmise ajal. KĂ€sk «git maintenance» vĂ”imaldab teha optimeerimisi ja hoida repositooriumi struktuuri taustal optimaalsena, ilma interaktiivset seanssi blokeerimata â kord tunnis tehakse vĂ€rskete objektide ennetav laadimine kaugrepositooriumist ja commit-graafi faili uuendamine ning igal ööl kĂ€ivitatakse repositooriumi pakkimisprotsess.
- Lisatud on tugi pack-failide pöördindeksi (revindex) hoidmiseks kettal. Meeldetuletuseks: Git salvestab kĂ”ik andmed objektidena, mis paiknevad eraldi failides. Repositooriumiga töötamise tĂ”hustamiseks paigutatakse objektid tĂ€iendavalt pack-failidesse, kus teave on esitatud ĂŒksteise jĂ€rel paiknevate objektide voona (sama vormingut kasutatakse objektide edastamisel kĂ€skudega git fetch ja git push). Iga pack-faili jaoks luuakse indeksifail (.idx), mis vĂ”imaldab objekti identifikaatori pĂ”hjal vĂ€ga kiiresti mÀÀrata nihke pack-failis, kus vastav objekt asub. Git 2.31-s pakutud pöördindeks (.rev) on mĂ”eldud objekti identifikaadi mÀÀramise protsessi optimeerimiseks pack-failis objekti asukoha teabe pĂ”hjal.
Varem tehti see teisendus jooksvalt pack-faili töötlemise ajal ja seda hoiti ainult mÀlus, mis ei vÔimaldanud selliseid indekseid uuesti kasutada ning sundis indeksit iga kord uuesti looma. Indeksi koostamine taandub objekt-positsioon paaridest massiivi loomisele ja selle positsiooni jÀrgi sortimisele, mis vÔib suurte pack-failide puhul vÔtta palju aega.
NĂ€iteks objektide sisu kuvamise toiming, mis kasutab otsest indeksit, töötas 62 korda kiiremini kui objektide suuruse nĂ€itamise toiming, mille puhul positsiooni ja objekti seose andmeid ei indekseeritud. PĂ€rast pöördindeksi kasutuselevĂ”ttu hakkasid need toimingud vĂ”tma ligikaudu sama palju aega. Pöördindeksid vĂ”imaldavad kiirendada ka objektide saatmist kĂ€skude fetch ja push tĂ€itmisel, kuna valmisandmeid saab otse kettalt edastada. Vaikimisi pöördindekseid ei looda; nende genereerimiseks tuleb lubada seadistus âgit config pack.writeReverseIndex trueâ ja seejĂ€rel pakkida repositoorium kĂ€suga âgit repack -Adâ.
- Lisatud on jĂ”udluse optimeerimised, mis pĂ”hinevad commit-graph failivormingusse, mida kasutatakse commitâide teabele juurdepÀÀsu optimeerimiseks, lisandunud uutel andmetel commitâi generatsiooninumbri kohta. Neid andmeid saab kasutada tĂ€iendavate commit-toimingute kiirendamiseks.
- TĂ€iendatud on vĂ”imalusi vaikimisi uutes repositooriumides kasutatava peaharu nime ĂŒmbermÀÀramiseks (seadistus init.defaultBranch). VĂ€liste repositooriumide poole pöördumisel pĂŒĂŒab git vĂ€lja vĂ”tta haru, millele HEAD osutab, st kui vĂ€line server kasutab vaikimisi haru âmainâ, siis pĂŒĂŒab toiming âgit cloneâ kohalikult vĂ€lja vĂ”tta âmainâ. Git 2.31-s on sellise vĂ€ljavĂ”tmise tugi nĂŒĂŒd rakendatud ka tĂŒhjade repositooriumide jaoks. NĂ€iteks uue repositooriumi kohalikul kloonimisel enne esimeste paikade lisamist sisaldab kohalik koopia nĂŒĂŒd vĂ€lises serveris mÀÀratud peaharu vaikimisi nime.
- KĂ€sule âgit rev-listâ on lisatud valik ââdisk-usageâ, mis vĂ”imaldab kuvada objektide suuruse koondandmeid.
- Eelseisva ĂŒhendamiste tĂ€itmise taustaprogrammi vahetuse eel on ĂŒmbernimetamiste tuvastamist mĂ€rkimisvÀÀrselt optimeeritud.
- Aegunud PCRE1 regulaaravaldise teegi tugi on lÔpetatud.
- Lisatud on vĂ”imalus lĂŒhendatud linkide kasutamine sunniviisiliselt keelata sĂ”ltumata rĂ€sialgoritmist. Keeld aktiveeritakse, mÀÀrates parameetrile core.abbrev vÀÀrtuse «no».
- KĂ€sule «git rev-parse» on lisatud valik «âpath-format=(absolute|relative)», millega saab mÀÀrata, kas vĂ€ljundis kuvatakse suhtelised vĂ”i absoluutsed teed.
- Bashâi automaattĂ€ienduse skriptides on lihtsustatud oma «git» alamkĂ€skude tĂ€iendamisreeglite lisamist.
- KĂ€sule «git bundle» on lisatud valik «âstdin», mis vĂ”imaldab lugeda viiteid standardsisendist.
- KĂ€sule «git log» on lisatud uus valik «âdiff-merges=».
- KĂ€sule «git ls-files» on lisatud valik «âdeduplicatecan» duplikaatide eemaldamiseks vĂ€ljundist.
- Lisatud on uued maskid commitâide vahemiku vĂ€listamiseks â «^!» ja «^-».
- KĂ€sule «git range-diff» on lisatud valikud «âleft-only» ja «âright-only», et kuvada ainult ĂŒks vĂ”rreldava vahemiku pool.
- KĂ€skudele «git diff» ja «git log» on lisatud valikud «âskip-to=» ja «ârotate-to=», et algsed teed vahele jĂ€tta vĂ”i lĂ”ppu teisaldada.
- KĂ€sule «git difftool» on lisatud valik «âskip-to=», mis vĂ”imaldab katkestatud seanssi jĂ€tkata suvalisest teest.
- Arendajate vaheliste konfliktide lahendamise pÔhimÔtteid mÀÀratlev kÀitumisjuhend (Code of Conduct) on uuendatud versioonini 2.0 (varem kasutati versiooni 1.4).
Allikas: opennet.ru
