Pärast kolme kuu arengut on avalikustatud jaotatud allikakoodihalduse süsteemi Git 2.36 versioon. Git on üks populaarsemaid, usaldusväärsemaid ja kõrge jõudlusega versioonihaldussüsteeme, mis pakub paindlikke tööriistu mittelineaarseks arenduseks, tuginedes harude jagamisele ja sulandumisele. Ajaloo terviklikkuse ja tagasipööramise muudatuste suhtes vastupidavuse tagamiseks kasutatakse iga commit'i juures kogu varasema ajaloo vaiku hash'imist ning on võimalik kinnitada digitaalsete allkirjadega arendajate eraldi sildid ja commit'id.
Eelmise väljaande võrreldes on uude versioonis vastu võetud 717 muudatust, mille on ette valmistanud 96 arendajat, kellest 26 osaleb arenduses esmakordselt. Peamised uuendused:
- Käskudesse «git log» ja «git show» on lisatud valik «—remerge-diff», mis võimaldab näidata erinevusi ühise sulandumise tulemuse ja tegelike andmete vahel, mis on esitatud commit'is pärast «merge» käsu töötlemist, mis võimaldab selgelt hinnata muutusi, mis on tehtud konfliktide lahendamise tulemusena. Tavaline käsk «git show» eraldab erinevad konfliktide lahendused vahemaa kaudu, mis raskendab muudatuste mõistmist. Näiteks alloleval ekraanipildil näitab rida «+/-» ilma vahemargina viimast konflikti lahendust, mis on seotud esimeses harus sha1 ümbernimetamisega oid kommentaaris, ja «+/-» koos vahemargina on esialgne konflikti lahendus, mille põhjustas teises harus funktsioonis dwim_ref() täiendava argumendi ilmumine.

Optsi «—remerge-diff» kasutamisel ei eristata konfliktilahenduste erinevusi iga vanema haru kohta, vaid näidatakse üldised erinevused konflikti sisaldava faili ja faili vahel, kus konfliktid on lahendatud.

- Ketta vahefailide lähtestamise käitumise seadistamise paindlikkust on suurendatud fsync() funktsiooni kutsumise kaudu. Varasemalt saadaval olnud parameeter core.fsyncObjectFiles on jagatud kaheks konfiguratsioonimuutujaks core.fsync ja core.fsyncMethod, mis annavad võimaluse rakendada fsync mitte ainult objektifailidele (.git/objects), vaid ka muudele git struktuuridele, nagu lingid (.git/refs), reflog ja pakifailid.
Muutuja core.fsync võimaldab määrata Git'i sisemiste struktuuride nimekirja, mille puhul kutsutakse pärast kirjutamistehet täiendavalt välja fsync. Muutuja core.fsyncMethod võimaldab valida vahemälu tühjendamise meetodi, näiteks võib valida fsync sama nime saanud süsteemi kutsumise jaoks või näidata writeout-only, et kasutada edasi lükatud kirjutamist (pagecache writeback).
- Vulnerabilities, mis manipuleerivad teiste kasutajate .git kataloogide asendustega jagatud diskide puhul, kaitsmiseks on tugevdatud repositoriumi omaniku kontrolli. Nüüd on git'i käskude täitmine lubatud ainult oma «.git» kataloogides. Kui repositoriumi kataloog kuulub teisele kasutajale, väljastatakse vaikimisi viga. Seda käitumist saab keelata seadega safe.directory.
- Käsku «git cat-file», mis on mõeldud Git'i objektide algse sisu väljatrükkimiseks, on lisatud valik «—batch-command», mis täiendab varasemat «—batch» ja «—batch-check» käsku, võimaldades adaptiivset väljundi tüübi valikut, märkides «contents » sisu väljatrükkimiseks või «info » objekti teabe väljatrükkimiseks. Lisaks toetatakse käsku «flush» väljundpuhvri tühjendamiseks.
- Käsku «git ls-tree», mis on mõeldud objektipuude sisu loendi genereerimiseks, on lisatud valik «—oid-only» («—object-only»), sarnanedes «—name-only»-le, mis väljastab ainult objektide identifikaatorid skriptide väljakutsumise lihtsustamiseks. Samuti on rakendatud valik «—format», mis võimaldab määratleda oma väljundi vormingu, kombineerides teavet režiimi, tüübi, nime ja suuruse kohta.
- Käsku «git bisect run» on rakendatud teavet skripti täitmise faili järgi määratlemise kohta ja sel juhul veakoode 126 või 127 väljundiks (varem, kui skripti ei olnud võimalik käivitada, olid kõik ülevaatused märgitud probleemide olemasoluks).
- Käsku «git fetch» on lisatud valik «—refetch» kõigi objektide tõmbamiseks, teavitamata teist poolt juba kohalike süsteemide sisu kohta. Selline käitumine võib olla kasulik seisundi taastamiseks krahhide järel, kui ei ole kindel kohalike andmete terviklikkuses.
- Komanditesse «git update-index», «git checkout-index», «git read-tree» ja «git clean» on lisatud toetus osalistele indeksitele (sparse index), mis võimaldavad parandada jõudlust ja säästa ruumi repositooriumides, kus teostatakse osalist kloonimist (sparse-checkout).
- Muudetud on käsku «git clone —filter=… —recurse-submodules», mis nüüd viib osalise kloonimise alamsubmodulites (varem rakendati filtrit ainult põhiaine jaoks ning alamsubmodulid klooniti täielikult, arvestamata filtrit).
- Käsku «git bundle» on lisatud tugi filtrite määratlemiseks sisu valikulise paigutamise jaoks sarnaselt osaliste kloonimise operatsioonidele.
- Käsku «git branch» on lisatud valik «—recurse-submodules» alamsubmodulite rekursiivseks läbimiseks.
- Userdiff'isse on pakutud uus töötleja Kotlin'i keele jaoks.
Allikas: opennet.ru


