Efter tre mÄnaders utveckling har en version av det distribuerade systemet för hantering av kÀllkodstekster Git 2.36 lanserats. Git Àr ett av de mest populÀra, pÄlitliga och högpresterande versionshanteringssystemen, som erbjuder flexibla verktyg för icke-linjÀr utveckling baserad pÄ gren- och sammanslagningsprinciper. För att sÀkerstÀlla integriteten av historien och motstÄndskraften mot retroaktiva förÀndringar anvÀnds implicit hashing av hela den tidigare historien i varje commit; det Àr ocksÄ möjligt att verifiera digitala signaturer av utvecklare för specifika taggar och commits.
JÀmfört med den föregÄende versionen har den nya versionen antagit 717 förÀndringar som förberetts med hjÀlp av 96 utvecklare, varav 26 deltog i utvecklingen för första gÄngen. De viktigaste nyheterna Àr:
- I kommandona "git log" och "git show" har en ny parameter "âremerge-diff" lagts till, vilket gör det möjligt att visa skillnaderna mellan det gemensamma resultatet av sammanslagningen och de faktiska data som Ă„terspeglas i commit efter att kommandot "merge" har utförts, vilket gör att man tydligt kan bedöma förĂ€ndringarna som gjorts till följd av konfliktlösningen vid sammanslagningen. Det vanliga kommandot "git show" separerar olika konfliktlösningar med indrag, vilket komplicerar förstĂ„elsen av förĂ€ndringarna. Till exempel visar raderna "+/-" utan indrag den senaste konfliktlösningen relaterad till namnbytet frĂ„n den första grenen sha1 till oid i kommentaren, medan "+/-" med indrag visar den ursprungliga konfliktlösningen orsakad av att ett extra argument i funktionen dwim_ref() har tillkommit i den andra grenen.

Vid anvĂ€ndning av alternativet "âremerge-diff" separeras inte skillnaderna mellan konfliktlösningar för varje förĂ€ldergren, utan viser gemensamma skillnader mellan filen som har sammanslagningskonflikter och filen dĂ€r konflikterna har lösts.

- Flexibiliteten att konfigurera beteendet för att ÄterstÀlla disk-cache genom att anropa fsync()-funktionen har ökat. Den tidigare tillgÀngliga parametern core.fsyncObjectFiles har delats upp i tvÄ konfigurationsvariabler, core.fsync och core.fsyncMethod, vilket möjliggör att tillÀmpa fsync inte bara pÄ objektfiler (.git/objects) utan ocksÄ pÄ andra git-strukturer som referenser (.git/refs), reflog och packfiler.
Genom variabeln core.fsync kan du ange en lista över interna Git-strukturer som ska anropas för fsync efter skrivoperationen. Variabeln core.fsyncMethod gör det möjligt att vÀlja metod för att tömma cachen, till exempel kan du vÀlja fsync för att anvÀnda det motsvarande systemanropet eller ange writeout-only för att tillÀmpa fördröjd skrivning (pagecache writeback).
- För att skydda mot sÄrbarheter som manipulerar genom att substituera andra anvÀndares .git-kataloger i delade partitioner, har Àgarkontrollen av repositoriet stÀrkts. NÄgra git-kommandon fÄr nu endast utföras i sina egna " .git ". Om katalogen med repositoriet tillhör en annan anvÀndare, kommer ett felmeddelande att visas som standard. Detta beteende kan inaktiveras genom att justera instÀllningen safe.directory.
- I kommandot "git cat-file", som Ă€r avsett att visa det ursprungliga innehĂ„llet i Git-objekt, har en option "âbatch-command" lagts till, vilket kompletterar de tidigare tillgĂ€ngliga kommandona "âbatch" och "âbatch-check" med möjligheten till adaptiv typval av output genom att ange "contents " för att visa innehĂ„llet eller "info " för att visa information om objektet. Dessutom stöds kommandot "flush" för att tömma outputbufferten.
- I kommandot "git ls-tree", som anvĂ€nds för att skapa en lista över innehĂ„llet i objekttrĂ€d, har en option "âoid-only" ("âobject-only") lagts till, pĂ„ liknande sĂ€tt som "âname-only", vilket bara visar objektens identifierare för att förenkla utkallningar frĂ„n skript. En option "âformat" har ocksĂ„ implementerats för att definiera ett eget outputformat, genom att kombinera information om lĂ€ge, typ, namn och storlek.
- I kommandot "git bisect run" har det implementerats för att avgöra avsaknad av kommandot för körningsstatus i skript och för att i detta fall visa fel med koderna 126 eller 127 (tidigare, om skriptet inte kunde startas markerades alla revisioner som problematiska).
- I kommandot "git fetch" har en option "ârefetch" lagts till för att hĂ€mta alla objekt utan att informera den andra sidan om innehĂ„llet som redan finns pĂ„ det lokala systemet. Detta beteende kan vara anvĂ€ndbart för att Ă„terstĂ€lla tillstĂ„nd efter fel, nĂ€r det inte finns nĂ„gon sĂ€kerhet om integriteten av de lokala uppgifterna.
- Kommandona «git update-index», «git checkout-index», «git read-tree» och «git clean» har lagts till stöd för sparade index (sparse index), vilket möjliggör förbÀttrad prestanda och utrymmesbesparing i arkiv dÀr delvisa kloningar (sparse-checkout) utförs.
- Beteendet hos kommandot «git clone âfilter=⊠ârecurse-submodules» har Ă€ndrats, vilket nu leder till delvis kloning av submoduler (tidigare tillĂ€mpades filtret endast pĂ„ huvudinnehĂ„llet, och submoduler klonades helt utan att ta hĂ€nsyn till filtret).
- Kommandot «git bundle» har fÄtt stöd för att ange filter för selektiv placering av innehÄll i likhet med delvisa kloningsoperationer.
- Ett nytt alternativ «ârecurse-submodules» har lagts till kommandot «git branch» för rekursiv traversering av submoduler.
- I userdiff föreslÄs en ny hanterare för sprÄket Kotlin.
KĂ€lla: opennet.ru


