Pärast kolme kuu arendustööde tulemusi on välja antud jaotatud versioonihaldussüsteemi Git 2.43 versioon. Git on üks populaarsemaid, usaldusväärsemaid ja kõrge jõudlusega versioonihaldussüsteeme, mis pakub paindlikke vahendeid mitte-lineaarses arenduses, põhinedes harude ja nende ühendamise printsiipidel. Ajaloo terviklikkuse ja tagurpidi muudatuste vastupidavuse tagamiseks kasutatakse kõigi varasemate muudatuste automaatset häshtingut igas commit'is, samuti on võimalik eraldi siltide ja commit'ide digiallkirjadega kinnitamine.
Võrreldes eelmise versiooniga võeti uude versiooni vastu 464 muudatust, mille ettevalmistamisel osales 80 arendajat, kellest 17 osales arendustöös esmakordselt. Peamised uuendused:
- Käsku "git repack" on lisatud valikud "--filter" ja "--filter-to", mis võimaldavad reposti ümberehitamise filtering objekti vastavalt antud filtrile ning vajadusel viia eraldi kohta objektid, mis ei vasta antud filtrile. Valikuid võib kasutada reposti jagamiseks vastavalt teatud kriteeriumitele (nt. tarbetute või liiga suurte objektide eemaldamiseks), säilitades samas juurdepääsu kõigile osadele osalise kloonimise kaudu. Näiteks, et hoida repos blobe, mille suurus on alla 1 MB, ja viia teise reposse ülejäänud suured objektid, saab kasutada: $ git init --bare ../backup.git $ git repack -ad --filter='blob:limit=1m' \ --filter-to=../backup.git/objects/pack/pack
Repo algatamine osalise kloonimise abil võimaldab töötada mittetäieliku koopiaga repost, korrektselt käsitledes puuduvate objektide päringuid (puuduvate objektide, et pärida, laaditakse need vajadusel reaalajas).
- Lisatud on mitme pack-failiga töötamise võimalus, mis sisaldab teavet kätte saamata jäänud objektide kohta («cruft packs»), millele pole reposis viidatud (harud ega sildid ei viita neile). Uue valiku abil «git repack —max-cruft-size» on võimalik määrata üksiku pack-faili maksimaalne suurus ja saavutada kätte saamata objektide andmebaasi jagamine väikeste pack-failide seeriaks. Mitme väikese pack-faili kasutamine ühe suure asemel vähendab oluliselt sisendi/väljundi operatsioone, kui reponeeritakse reposid, kus on palju kätte saamata objekte, kuna iga re-packimise operatsiooni jaoks ei pea olema vajalik kõiki andmeid uuesti kirjutada.
- Lisatud on tuvastamine kahekordse commit'i tühistamise katsete tegemisel läbi «git revert» ja selle arvestamine tühistamise sõnumi koostamisel (kui tühistatakse uuesti «git revert», siis «Revert: Revert: fix bug» asendatakse «Reapply fix bug»-iga, ja kui muudatust tühistatakse kolmandat korda — «Revert Reapply fix bug»). $ git revert —no-edit HEAD >/dev/null $ git revert —no-edit HEAD >/dev/null $ git log —oneline a300922 (HEAD -> main) Reapply «fix bug» 0050730 Revert «fix bug» b290810 fix bug
- Lubatud on kasutada koos valikuid «—rfc» ja «—subject-prefix». Näiteks, et luua e-kiri, mille teema prefiks on «[RFC PATCH bpf-next]», võib sisestada: $ git format-patch —subject-prefix=»PATCH bpf-next» —rfc
- Käskluses «git log» on lubatud kasutada kohatäitjat «%(decorate)», et näidata seotud harude nimesid, kui määrata vormingut valikuga «—format», näiteks: $ git log —format=’%cr%(decorate) (%h) %s’ 3 päeva tagasi (HEAD -> master, origin/master, origin/HEAD) (e0939bec27) RelNotes: väiksed sõnastuse parandused versiooni 2.43.0 väljalaske märkmetes 7 päeva tagasi (sild: v2.43.0-rc1) (dadef801b3) Git 2.43-rc1 7 päeva tagasi (8ed4eb7538) Ühenda haru ‘tb/rev-list-unpacked-fix’
- Käskudes «git for-each-ref» ja sarnastes käskudes on lisatud võimalus rakendada reegleid .mailmap antud läbi valiku «—format» vormingu määrangutele, näiteks «%(authorname)» ja «%(committeremail)».
Allikas: opennet.ru
