Pasi kaluan tre muaj zhvillimi, është publikuar lëshimi i sistemit të shpërndarë të menaxhimit të teksteve burimore Git 2.36. Git është një prej sistemeve më të njohura, të sigurta dhe me performancë të lartë për menaxhimin e versioneve, e cila ofron mjete fleksibël për zhvillimin jolinjare, e cila bazohet në degëzimin dhe bashkimin e degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve 'me pas' përdoret hashing-u implicit i gjithë historisë së mëparshme në çdo commit, siç është e mundur edhe të verifikohet me nënshkrime digjitale nga zhvilluesit e etiketimeve dhe commit-eve të veçanta.
Në krahasim me lëshimin e kaluar, në këtë version janë pranuar 717 ndryshime, të përgatitura nga 96 zhvillues, nga të cilët 26 morën pjesë për herë të parë në zhvillim. Novitetet kryesore:
- Opsioni '—remerge-diff' është shtuar në komandat 'git log' dhe 'git show', duke lejuar të tregoni dallimet midis rezultatit të përbashkët të bashkimit dhe të dhënave efektive, të reflektuara në commit pas përpunimit të komandës 'merge', e cila lejon të vlerësoni qartë ndryshimet, të kryera si rezultat i zgjidhjes së konflikteve gjatë bashkimit. Komanda e zakonshme 'git show' ndan zgjidhjet e ndryshme të konflikteve me një hapësirë, e cila e bën të vështirë kuptimin e ndryshimeve. Për shembull, në skrinshot-in më poshtë, linjat '±' pa hapësirë tregojnë zgjidhjen e fundit të konfliktit, lidhur me rinovimin në degën e parë sha1 në oid në koment, ndërsa '±' me hapësirë tregon zgjidhjen fillestare të konfliktit, e shkaktuar nga shfaqja në degën e dytë të një argumenti të shtuar në funksionin dwim_ref().

Kur përdoret opsioni '—remerge-diff', dallimet midis zgjidhjeve të konflikteve nuk ndahen për çdo degë prindërore, por tregohen dallimet e përbashkëta midis skedarit që ka konflikte bashkimi dhe skedarit në të cilin janë zgjidhur konfliktet.

- Është rritur fleksibiliteti në rregullimin e sjelljes për rivendosjen e keshtjellave diskore përmes thirrjes së funksionit fsync(). Parametri i disponueshëm më parë core.fsyncObjectFiles është ndarë në dy variabla konfigurimi core.fsync dhe core.fsyncMethod, duke ofruar mundësinë për të aplikuar fsync jo vetëm në skedarët me objekte (.git/objects), por edhe në struktura të tjera git, siç janë lidhjet (.git/refs), reflog dhe skedarët e paketave.
Me anë të variablit core.fsync, mund të specifikohet një listë e strukturave të brendshme të Git, për të cilat do të thirret dodat fsync pas operacionit të shkruar. Variabli core.fsyncMethod lejon të zgjidhet metoda për të hequr cache-në, për shembull, mund të zgjidhet fsync për të përdorur thirrjen sistemike me të njëjtin emër, ose të specifikohet writeout-only për të përdorur shkrimin e vonuar (pagecache writeback).
- Për të mbrojtur nga dobësitë, që manipulojnë me zëvendësimin nga përdorues të tjerë të katalogëve .git në ndarjet e ndara, është përforcuar kontrolli i pronarëve të depozites. Të gjitha komandat git tani lejohet të ekzekutohen vetëm në katalogët e tyre " .git ". Nëse katalogu i depozitës i përket një përdoruesi tjetër, për default do të jepet një gabim. Kjo sjellje mund të çaktivizohet me anë të konfigurimit safe.directory.
- Në komandën "git cat-file", e destinuar për të outputuar përmbajtjen origjinale të objekteve Git, është shtuar opsioni "—batch-command", i cili plotëson komandat e mëparshme "—batch" dhe "—batch-check" me mundësinë për të zgjedhur adaptivisht llojin e output-it duke treguar "contents " për të outputuar përmbajtjen, ose "info " për të outputuar informacionin mbi objektin. Për më tepër, është përkrahur komanda "flush" për të hequr buffer-in e output-it.
- Në komandën "git ls-tree", e destinuar për të formuar një listë të përmbajtjes së pemës së objekteve, është shtuar opsioni "—oid-only" ("—object-only"), në analogji me "—name-only" që outputon vetëm identifikuesit e objekteve për ta bërë thirrjen më të thjeshtë nga skriptet. Gjithashtu është realizuar opsioni "—format" që lejon të përcaktohet formati i personalizuar i output-it, duke kombinuar informacionin mbi modin, llojin, emrin dhe madhësinë.
- Në komandën "git bisect run", është realizuar përcaktimi i mos-shfaqjes së një flagu për skriptin si një skedë ekzekutimi dhe outputi në këtë rast i gabimeve me kodet 126 ose 127 (më parë, nëse skenari nuk mund të ishte nisur, të gjitha revizionet shënoheshin si të dëmtuara).
- Në komandën "git fetch" është shtuar opsioni "—refetch" për të nxjerrë të gjithë objektet pa informuar palën tjetër për përmbajtjen, që tashmë është në sistemin lokal. Një sjellje e tillë mund të jetë e dobishme për rikthimin në një gjendje pas dështimesh, kur nuk është e sigurt për integritetin e të dhënave lokale.
- Në komandat «git update-index», «git checkout-index», «git read-tree» dhe «git clean» u shtua mbështetje për indekset pjesore (sparse index), duke lejuar përmirësimin e performancës dhe kursimin e hapësirës në depot ku kryhen operacione të klonimit të pjesshëm (sparse-checkout).
- Së fundmi është ndryshuar sjellja e komandës «git clone —filter=… —recurse-submodules», e cila tani çon në klonimin e pjesshëm të submoduleve (më parë, gjatë ekzekutimit të komandave të tilla, filtri aplikohej vetëm në përmbajtjen kryesore, ndërsa submodulet klonoheshin plotësisht pa marrë parasysh filtrin).
- Në komandën «git bundle» u shtua mbështetje për specifikimin e filtrave për vendosjen selektive të përmbajtjes, në mënyrë të ngjashme me operacionet e klonimit të pjesshëm.
- Në komandën «git branch» u shtua mundësia «—recurse-submodules» për kalimin rekurziv nëpër submodule.
- Në userdiff u propozua një përpunues i ri për gjuhën Kotlin.
Burimi: opennet.ru


