Vydanie ovládania zdroja Git 2.36

Po troch mesiacoch vývoja bolo zverejnené vydanie distribuovaného systému riadenia zdrojov Git 2.36. Git je jedným z najpopulárnejších, najspoľahlivejších a najvýkonnejších systémov na správu verzií, ktorý poskytuje flexibilné nelineárne vývojové nástroje založené na vetvení a zlučovaní vetiev. Na zabezpečenie integrity histórie a odolnosti voči retroaktívnym zmenám sa používa implicitné hashovanie celej predchádzajúcej histórie v každom commite, je možné overiť aj jednotlivé tagy a commity digitálnymi podpismi od vývojárov.

Oproti predchádzajúcemu vydaniu bolo do novej verzie, pripravovanej za účasti 717 vývojárov, prijatých 96 zmien, z ktorých 26 sa podieľalo na vývoji po prvýkrát. Hlavné inovácie:

  • Do príkazov "git log" a "git show" bola pridaná možnosť "-remerge-diff", ktorá vám umožňuje zobraziť rozdiely medzi celkovým výsledkom zlúčenia a skutočnými údajmi, ktoré sa prejavia v odovzdaní po spracovaní príkazu " merge" príkaz, ktorý vám umožňuje vizuálne vyhodnotiť zmeny vykonané ako výsledok riešenia konfliktov zlúčenia. Zvyčajný príkaz „git show“ oddeľuje rôzne riešenia konfliktov odsadením, čo sťažuje pochopenie zmien. Napríklad na snímke obrazovky nižšie riadok „+/-“ bez odsadenia zobrazuje posledné riešenie konfliktu spojené s premenovaním v prvej vetve sha1 na oid v komentári a „+/-“ s odsadením zobrazuje počiatočný konflikt. rozlíšenie spôsobené objavením sa dodatočného argumentu v druhej vetve funkcie dwim_ref().
    Vydanie ovládania zdroja Git 2.36

    Pri použití voľby "--remerge-diff" nie sú rozdiely medzi riešeniami konfliktov oddelené pre každú nadradenú vetvu, ale sú zobrazené celkové rozdiely medzi súborom, ktorý má konflikty zlučovania a súborom, ktorý má konflikty vyriešené.

    Vydanie ovládania zdroja Git 2.36

  • Vylepšená flexibilita pri prispôsobovaní správania vyprázdnenia vyrovnávacej pamäte disku pomocou volania funkcie fsync(). Predtým dostupný parameter core.fsyncObjectFiles bol rozdelený do dvoch konfiguračných premenných core.fsync a core.fsyncMethod, aby bolo možné použiť fsync nielen na súbory objektov (.git/objects), ale aj na iné štruktúry git, ako sú referencie (.git /refs), reflog a pack súbory.

    Cez premennú core.fsync môžete zadať zoznam interných štruktúr Git, po operácii zápisu sa pre ne dodatočne zavolá fsync. Premenná core.fsyncMethod vám umožňuje vybrať metódu pre vyprázdnenie vyrovnávacej pamäte, napríklad môžete vybrať fsync na použitie systémového volania s rovnakým názvom alebo zadať len zápis, ak chcete použiť čakajúci spätný zápis (spätný zápis pagecache).

  • Na ochranu pred zraniteľnosťami, ktoré manipulujú s nahradzovaním adresárov .git inými používateľmi do zdieľaných oddielov, bolo posilnené overenie vlastníka úložiska. Spúšťanie akýchkoľvek príkazov git je teraz povolené iba v ich vlastných adresároch „.git“. Ak adresár úložiska vlastní iný používateľ, štandardne sa vyvolá chyba. Toto správanie je možné vypnúť pomocou nastavenia safe.directory.
  • Do príkazu „git cat-file“ bola pridaná možnosť --batch-command, ktorá je určená na zobrazenie pôvodného obsahu objektov Git, pričom predtým dostupné príkazy „--batch“ a „--batch-check“ boli doplnené o príkaz schopnosť adaptívneho výberu typu výstupu prostredníctvom označenia "obsah <objekt>" na zobrazenie obsahu alebo "informácie <objekt>" na zobrazenie informácií o objekte. Okrem toho je podporovaný príkaz "flush" na vyprázdnenie výstupnej vyrovnávacej pamäte.
  • Voľba "-oid-only" ("--object-only") bola pridaná do príkazu "git ls-tree", ktorý je určený na výpis obsahu stromu objektov, ktorý analogicky s "-- name-only", zobrazuje iba identifikátory objektov, aby sa zjednodušilo volanie zo skriptov. Bola tiež implementovaná možnosť "--format", ktorá vám umožňuje definovať svoj vlastný výstupný formát kombináciou informácií o režime, type, názve a veľkosti.
  • V príkaze "git bisect run" je implementovaná definícia nenastavovania znamienka spustiteľného súboru pre skript a výstup chýb s kódmi 126 alebo 127 v tomto prípade (predtým, ak sa skript nedal spustiť, boli všetky revízie označené ako problémy).
  • Pridaná možnosť "--refetch" do príkazu "git fetch" na načítanie všetkých objektov bez informovania druhej strany o obsahu, ktorý je už na lokálnom systéme. Toto správanie môže byť užitočné na obnovenie stavu po zlyhaniach, keď nie je istota o integrite miestnych údajov.
  • Pridaná podpora pre riedke indexy do príkazov git update-index, git checkout-index, git read-tree a git clean na zlepšenie výkonu a šetrenie miesta v archívoch, ktoré vykonávajú riedke indexy klonovanie (sparse-checkout).
  • Správanie príkazu "git clone --filter=... --recurse-submodules" bolo zmenené, čo teraz vedie k čiastočnému klonovaniu podmodulov (predtým sa pri vykonávaní takýchto príkazov filter aplikoval iba na hlavný obsah a submoduly boli klonované úplne bez zohľadnenia filtra).
  • Do príkazu „git bundle“ bola pridaná podpora pre špecifikáciu filtrov pre selektívne umiestnenie obsahu, podobne ako pri operáciách čiastočného klonovania.
  • Pridaná možnosť „--recurse-submodules“ do príkazu „git branch“ na rekurzívne prechádzanie submodulmi.
  • Userdiff navrhol nový handler pre jazyk Kotlin.

Zdroj: opennet.ru

Pridať komentár