Vydanie systému na správu zdrojových kódov Git 2.52

Po troch mesiacoch vývoja bol predstavený release distribuovaného systému správy zdrojových kódov Git 2.52. Git sa vyznačuje vysokou výkonnosťou a poskytuje prostriedky pre nelineárny vývoj, ktorý je založený na odvetvení a zlúčení vetiev. Na zabezpečenie integrity histórie a odolnosti voči "spätným" zmenám sa používa implicitné hashovanie celej predchádzajúcej histórie v každom commite, ako aj overenie digitálnymi podpismi vývojárov jednotlivých tagov a commitov. Kód Git je distribuovaný pod licenciou GPLv2+.

V porovnaní s predchádzajúcim vydaním bolo do novej verzie zapracovaných 637 zmien, pripravovaných za účasti 94 vývojárov (33 sa zúčastnilo vývoja Git prvýkrát). Hlavné novinky (1, 2, 3):

  • Bola pridaná príkaz "git last-modified" na zobrazenie zoznamu súborov v uvedenej revízii a commitov, cez ktoré boli vykonané posledné zmeny v každom z týchto súborov. $ git last-modified HEAD b56f6dcd7b4c90192018e848d0810f091d092913 test.h 29330ae4b820147c98e723399e9438c8bee60a8a test1.c 573ad8917beb99dc643b6e7f5c117a294384a575 test2.c
  • Bola pridaná príkaz "git repo" na vykonávanie akcií súvisiacich s vyťahovaním informácií z repozitára. Navrhnuté sú dve podpríkazy — "git repo info" a "git repo structure", ktoré poskytujú informácie o nastaveniach repozitára a údaje o štruktúre repozitára (napríklad je možné zistiť počet odkazov a objektov v repozitári). $ git repo info object.format references.format object.format=sha1 references.format=reftable $ git repo structure | Štruktúra repozitára | Hodnota | | ——————— | —— | | * Odkazy | | | * Počet | 1983 | | * Vetvy | 4 | | * Tagy | 1125 | | * Remote | 854 | | * Ostatné | 0 | | | | | * Dosažiteľné objekty | | | * Počet | 518955 | | * Commity | 77469 | | * Stromy | 188865 | | * Bloby | 251631 | | * Tagy | 990 |
  • Do príkazu "git refs" boli pridané tri podpríkazy, ktoré unifikujú roztrúsené a prekryté nízkoúrovňové operácie s odkazmi (git for-each-ref, git show-ref, git update-ref a git pack-refs):
    • "git refs optimize" — optimalizácia backendu pre ukladanie odkazov (analógia s "git pack-refs").
    • "git refs list" — zobrazenie zoznamu všetkých odkazov (analógia s "git for-each-ref" alebo "git show-ref").
    • "git refs exists" — kontrola existencie odkazu (analógia s "git show-ref --exists").
  • Formát pre export alebo import histórie commitov bol rozšírený o možnosť práce s kryptografickými podpismi, ktoré používajú ako identifikátory objektov algoritmy SHA-1 a SHA-256. V príkaze „git fast-import“ bola implementovaná podpora spracovania podpísaných tagov analogicky k podpísaným commitom. Boli pridané možnosti „—signed-commits=“ a „—signed-tags=“ na riadenie spracovania podpísaných commitov a tagov počas importu (režim môže mať hodnoty verbatim, warn-verbatim, warn-stri, strip alebo abort).
  • Do príkazu „git maintenance“ bola pridaná podpora novej stratégie „geometric“ („git config set maintenance.strategy geometric“), ktorá umožňuje skrátiť čas údržby veľkých monorepozitárov. V porovnaní s predtým dostupnou stratégiou, ktorá používa logiku ako v príkaze „git gc“, nová stratégia sa vyhýba repackovaniu všetkých objektov a vylučuje nadmerne náročné operácie, ako je zlúčenie všetkých pack súborov (zlučovanie sa uskutočňuje po častiach a bez čistenia odstránených objektov, ak je to možné).
  • Bol pridaný príkaz „git sparse-checkout clean“ na zjednodušenie obnovy stavu pracovného adresára, odstránením súborov, ktoré nezodpovedajú novému definovaniu sparse-checkout a nemali by byť prítomné v lokálnej kópii v súlade s aktuálnymi parametrami sparse-checkout.
  • Aby sa zbavila kódová základňa zložitostí a zjednodušilo sa údržba, bol vykonaný refaktoring na zníženie používania globálnej premennej the_repository.
  • Rozšírené použitie Bloomových filtrov, pravdepodobnostnej štruktúry na overovanie prítomnosti v množine, ktorá umožňuje falošné pozitíva pre neprítomné prvky, ale vylučuje vynechanie existujúcich prvkov. Bloomove filtre sa teraz používajú na urýchlenie vyhľadávania v histórii zmien pri zadaní masiek v súborových cestách, napríklad „foo/bar/*/baz“.
  • Výkon príkazu „git describe“ bol zvýšený o 30 % vďaka používaniu prioritného frontu. V príkaze „git remote rename“ bola urýchlená operácia premenovania odkazov. V príkaze „git ls-files“ bolo rozšírené použitie indexov. Práca príkazu „git log -L“ bola výrazne urýchlená vďaka vylúčeniu nadbytočných trojstupňových porovnaní pri spracovaní zlúčenia commitov. Boli vykonané optimalizácie v knižnici xdiff.
  • Bol poskytnutá voliteľná možnosť používať implementácie v jazyku Rust pre niektoré interné funkcie, ako je kódovanie a dekódovanie celočíselných hodnôt variabilnej dĺžky. Predvolene sa kod na Rust nepoužíva a na jeho zapnutie je potrebné zadať konštrukčnú vlajku WITH_RUST. V budúcnosti sa očakáva prepracovanie väčších interných komponentov Gitu na Rust a pridanie Rust medzi povinné konštrukčné závislosti v Gite 3.0.
  • Aktualizovaný zoznam zmien, ktoré narušujú kompatibilitu, ktoré budú aplikované v vetve Git 3.0. V Gite 3.0 sa rozhodlo zmeniť predvolené nastavenie init.defaultBranch na hodnotu „main“, t.j. v repozitároch vytvorených príkazom „git init“ bude predvolená vetva pomenovaná „main“, a nie „master“. Tiež sa uvádza prechod na identifikátory objektov založené na algoritme hashu SHA-256 pri inicializácii nových repozitárov. Na zjednodušenie prenositeľnosti medzi repozitármi s identifikátormi objektov na báze hashov SHA-1 a SHA-256 bola poskytnutá možnosť v repozitári s jedným algoritmom hashovania vykonávať operácie push a pull z repozitára, ktorý používa iný algoritmus hashovania.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster