Bolest souběžného systému pro správu zdrojového kódu Git 2.50 byla uvolněna. Git se vyznačuje vysokým výkonem a nabízí prostředky pro nelineární vývoj založené na větvení a slučování. Pro zajištění integrity historie a odolnosti vůči změnám „zpětně“ se používá implicitní hashování celé předchozí historie v každém commitu, stejně jako ověřování digitálními podpisy jednotlivých tagů a commitů od vývojářů. Kód Git je distribuován pod licencí GPLv2+.
Ve srovnání s předchozí verzí bylo do nové verze zahrnuto 621 změn, které byly připraveny za účasti 98 vývojářů, z nichž 35 se účastní vývoje poprvé. Hlavní novinky:
- Byla rozšířena možnost dělení na několik pack-souborů pro základnu nedosažitelných objektů („cruft packs“), na které v repozitáři neexistují odkazy (žádné větve nebo tagy na ně neodkazují). Použití několika malých pack-souborů místo jednoho velkého výrazně snižuje operace vstupu/výstupu při přeobalování repozitářů s velkým množstvím nedosažitelných objektů, jelikož pro každou operaci přeobalování není třeba přepisovat všechna data.
V nové verzi byla nabízena možnost „—combine-cruft-below-size“, která umožňuje organizovat sloučení stávajících pack-souborů, jejichž velikost nepřesahuje stanovenou hodnotu. Na rozdíl od dříve dostupné možnosti „—max-cruft-size“ nová možnost „—combine-cruft-below-size“ neomezuje maximální velikost výsledného pack-souboru, což umožňuje efektivnější sloučení pack-souborů v repozitářích s velkým množstvím nedosažitelných objektů rozložených ve více pack-souborech.
- Byla přidána experimentální podpora inkrementální aktualizace multi-pack indexů MIDX, kde každý vrstva MIDX-indexu s informacemi o dostupnosti objektů je umístěna v samostatném bitmap-souboru. V velmi velkých repozitářích realizovaný typ indexů umožňuje s přicházejícími commity rychle a efektivně přidávat nové bitové mapy dostupnosti objektů.
- Zo základného kódu bol odstránený starý engine na vykonávanie zlúčenia "recursive", ktorý bol nahradený úplne prepracovaným engine "ORT" (Ostensibly Recursive’s Twin), výkonejším, funkčnejším a jednoduchším na údržbu. ORT umožňuje určiť možnosť zlúčenia dvoch objektov bez vytvárania nových objektov v repozitári (pri starom engine bolo potrebné vykonať príkaz „git merge-tree —write-tree“, ktorý zapisoval nové objekty do repozitára). V Gite 2.50 bola v príkaze merge-tree implementovaná voľba „—quiet“, pri ktorej je možné skontrolovať možnosť zlúčenia na základe návratového kódu bez zápisu údajov do repozitára.
- V príkaze „git cat-file —batch“ a podobných príkazoch bola pridaná voľba „—filter“, ktorá umožňuje preskočiť niektoré objekty pri vykonávaní operácie. git cat-file —batch-check=’%(objectname)’ —filter=’object:type=tree’
- V príkaze „git maintenance“ boli implementované tri nové akcie: worktree-prune, rerere-gc a reflog-expire. Akcia worktree-prune je určená na odstránenie zastaraných alebo poškodených pracovných stromov (worktrees) v repozitári. Akcia rerere-gc odstraňuje staré záznamy, ktoré zostali po odstraňovaní konfliktov zlúčenia. Akcia reflog-expire odstraňuje zastarané, nedostupné objekty z reflogu.
- Bola pridaná príkaz „git reflog drop“, ktorý odstraňuje všetky údaje reflogu pre konkrétnu vetvu.
- Bola optimalizovaná správa a využívanie referencií, napríklad bolo implementované caching prefixov referencií, odstránené nadbytočné kontroly pri vykonávaní príkazu „git update-ref“, zvýšila sa efektívnosť vyhľadávania existujúcich iterátorov referencií.
- Pre knižnicu cURL boli pridané nastavenia KeepAlive: http.keepAliveIdle, http.keepAliveInterval a http.keepAliveCount.
- V príkaze „git rev-list“ bola implementovaná možnosť výstupu vo formáte vhodnom pre strojové spracovanie, pri ktorom je každé pole oddelené znakom NUL.
- Jazyk Perl bol vylúčený zo závislostí potrebných pre nástroje na prácu s dokumentáciou a vykonávanie testovacieho balíka („make test“). Mnohé Perl jednoradkové príkazy v testoch boli nahradené shellovými funkciami alebo prepisané do jazyka C.
- Bol pridaný userdiff spracovateľ pre formát konfiguračných súborov „.ini“.
- V príkaze send-email bola vylepšená podpora SMTP servera Outlook.
Zdroj: opennet.ru
