Saadaval on hajus tekstihaldussüsteem Git 2.31. Git on üks populaarsemaid, usaldusväärseid ja kõrge jõudlusega versioonihaldussüsteeme, mis pakub paindlikke vahendeid mitte-lineaarseks arenduseks, tuginedes harude ja ühenduste süsteemile. Ajaloo terviklikkuse ja muudatuste suhtes tagasiulatuva mõju tagamiseks kasutatakse iga commit'i puhul varasema kogu ajaloo implitsiitset hash'imist, samuti on võimalik arendajate digitaalse allkirjaga kinnitada eraldi silte ja commit'e.
Võrreldes eelmise väljaandega on uude versiooni kaasatud 679 muudatust, mille on ette valmistanud 85 arendajat, kellest 23 osaleb arenduses esmakordselt. Peamised uuendused:
- Loodud on käsk «git maintenance», mis võimaldab teostada perioodilisi töid süsteemides, mis ei toeta cron'i. Näiteks võimaldab uus käsk korraldada perioodilist reposti kompressiooni, et mitte oodata reposti lukustamise lõppu automaatse kompressiooni käivitamise ajal erinevate käskude käivitamisel. Käsk «git maintenance» võimaldab teostada optimeerimisi ja säilitada reposti optimaalset struktuuri taustprotsessis, blokeerimata interaktiivset seanssi — iga tunni järel toimub värskete objektide väljatõmmamine kaug-repost ja commit-graafi faili värskendamine, öösel aga käivitub reposti kompressiooni protsess.
- Lisatud on tosupport diskil tagumise indeksi (revindex) haldamiseks pack-failide puhul. Tuletame meelde, et Git salvestab kõik andmed objektide kujul, mis asuvad eraldi failides. Tõhususe parandamiseks paigutatakse objektid lisaks pack-failidesse, kus teave esitatakse objektide voona, mis järgivad üksteist (sarnast vormingut kasutatakse objektide edastamisel käskudega git fetch ja git push). Iga pack-faili jaoks luuakse indeksifail (.idx), mis võimaldab objekti identifikaatori alusel väga kiiresti määrata positsiooni pack-failis, kus antud objekt asub. Git 2.31 versioonis pakutud tagumine indeks (.rev) on suunatud objekti identifikaatori määramise protsessi optimeerimisele, kasutades teavet objekti asukoha kohta pack-failis.
Varem tehti selline teisendus jooksvalt pack-faili analüüsi ajal ja salvestati ainult mälu, mis takistas sarnaste indeksite taaskasutamist ja sunnib iga kord uut indeksit looma. Indeksi koostamise protsess koosneb paaride «objekt-asukoht» massiivi loomisest ja selle sorteerimisest asukoha järgi, mis võib suurte pack-failidega aega võtta.
Näiteks objektide sisu väljastamise operatsioon, mille puhul kasutatakse otsest indeksit, toimus 62 korda kiiremini kui objektide suuruse näitamise operatsioon, mille andmed positsiooni ja objekti seose kohta ei olnud indekseeritud. Pärast pöördindeksi kasutamist hakkasid need operatsioonid võtma umbes sama palju aega. Pöördindeksid võimaldavad ka objektide saadetamise operatsioonide kiirendamist fetch ja push käskude täitmisel, edastades andmeid otse kettalt. Pöördindeksid ei genereerita vaikimisi, nende loomiseks tuleb aktiveerida seadistus «git config pack.writeReverseIndex true» ja seejärel pakkida reposi käsklusega «git repack -Ad».
- Lisatud on jõudluse optimeerimised, mis põhinevad commit-graph failivormingu ilmumisel, mida kasutatakse commit'informatsiooni juurdepääsu optimeerimiseks, samuti uued commit'i genereerimisnumbrid, mida saab kasutada commit'itega seotud täiendavate toimingute kiiremaks tegemiseks.
- Täiendatud on võimekust ümber määrata peamise haru nimi, mida vaikimisi kasutatakse uutes hoidlates (seade init.defaultBranch). Kui suhtlete väliste hoidlatega, siis git üritab välja tõmmata haru, millele HEAD viitab, st kui väline server kasutab vaikimisi haru «main», siis operatsioon «git clone» püüab lokaalselt välja tõmmata «main». Git 2.31 toob sellise väljavõtte toetuse nüüd ka tühjadele hoidlatele. Näiteks, uue hoidla lokaalset kloonimist enne esimest patši lisamist, sisaldab nüüd lokaalne koopia väljaspoolt seadistatud serveril peamise haru nime vaikimisi.
- Käsku «git rev-list» on lisatud valik «—disk-usage», mis võimaldab kuvada objektide suuruse kokkuvõtte.
- Ootame lähenevat tagasisidebaasi vahetust, mis võimaldab sulandumisi, oluliselt on optimeeritud ümbernimetamise määramine.
- Toetamine vananenud regulaarsete väljendite teeki PCRE1 on peatatud.
- Pakutakse võimalust sundida lühendatud linkide kasutamine keelama, mis töötab olenematult hash-algoritmist. Keelamine aktiveeritakse, määrates parameetri core.abbrev väärtuseks «no».
- Käsku «git rev-parse» on lisatud valik «—path-format=(absolute|relative)» suhteliste või absoluutsete teede väljundi selge määratlemiseks.
- Bashi automaatse täiendamise skriptides on lihtsustatud reeglite lisamine oma «git» alamkäskude täiendamiseks.
- Käsku «git bundle» on lisatud valik «—stdin», mis loeb linke standardse sisendvoo kaudu.
- Käsku «git log» on lisatud uus valik «—diff-merges=<how>».
- Käsku «git ls-files» on lisatud valik «—deduplicatecan» duplikaatide eemaldamiseks väljundis.
- Lisatud on uued mustrid commitide vahemike välistamiseks — «<rev>^!» ja «<rev>^-<n>».
- Käsku «git range-diff» on lisatud valikud «—left-only» ja «—right-only», et kuvada ainult ühe poole võrreldavast vahemikust.
- Команда «git diff» и «git log» on saanud uued valikud —skip-to= ja —rotate-to=, mis võimaldavad vahele jätta või liikuda algsete teede lõppu.
- Käsule «git difftool» on lisatud valik «—skip-to=», et uuesti alustada katkestatud seanssi suvaliselt teelt.
- Käitumiskoodeks (Code-of-conduct), mis määratleb põhialused konfliktide lahendamiseks arendajate vahel, on uuendatud versioonile 2.0 (varasem versioon oli 1.4).
Allikas: opennet.ru
