vydanie distribuovaného systému správy zdrojového kódu . Git je jedným z najpopulárnejších, najspoľahlivejších a najvýkonnejších systémov správy verzií, poskytujúc flexibilné prostriedky pre nelineárny vývoj založené na vetvení a zlúčení vetiev. Na zabezpečenie integrity histórie a odolnosti voči zmenám "zpětně" sa používa implicitné hashovanie celej predchádzajúcej histórie v každom commite, rovnako je možné autentifikovať digitálnymi podpisami vývojárov jednotlivé tagy a commits.
V porovnaní s predchádzajúcou verziou obsahuje nová verzia 504 zmien, na ktorých sa podieľalo 64 vývojárov, z ktorých 12 sa zúčastnilo vývoja po prvýkrát. :
- Prechod na komunikačného protokolu Git je predvolený, ktorý sa používa pri vzdialenom pripojení klienta k Git serveru. Druhá verzia protokolu je pozoruhodná poskytnutím možnosti filtrovania vetiev a značiek na strane servera s odovzdávaním skráteného zoznamu odkazov klientovi. Predtým sa pri vykonávaní akéhokoľvek príkazu ťahania klientovi vždy posielal úplný zoznam odkazov v celom repozitári, aj keď klient aktualizoval iba jednu vetvu alebo kontroloval aktuálnosť svojej kópie repozitára. Ďalšou pozoruhodnou novinkou je možnosť pridávania nových funkcií do protokolu podľa toho, ako sa objavujú v nástrojoch novej funkčnosti. Kód klienta zostáva kompatibilný so starým protokolom a môže pokračovať v práci ako s novými, tak aj so starými servermi, automaticky sa vracajúc na prvú verziu, ak server nepodporuje druhú.
- Do tímu "git config" bola pridaná možnosť "—show-scope", ktorá uľahčuje určenie miesta, kde sú definované určité nastavenia. Git umožňuje definovať nastavenia na rôznych miestach: v repozitári (.git/info/config), v adresári používateľa (~/.gitconfig), v systémovom konfiguračnom súbore (/etc/gitconfig) a tiež prostredníctvom príkazových riadkových možností a premenných prostredia. Pri vykonávaní "git config" je ťažké pochopiť, kde je presne definované hľadané nastavenie. Na riešenie tejto úlohy bola k dispozícii možnosť "—show-origin", ale tá ukazuje len cestu k súboru, v ktorom je nastavenie definované, čo je užitočné, ak sa plánuje upraviť súbor, ale nepomáha, ak sa vyžaduje zmena hodnoty prostredníctvom "git config" s použitím možností "—system", "—global" alebo "—local". Nová možnosť "—show-scope" zobrazuje kontext definície premenných a môže sa používať spoločne s "—show-origin":
$ git —list —show-scope —show-origin
global file:/home/user/.gitconfig diff.interhunkcontext=1
global file:/home/user/.gitconfig push.default=current
[…]
local file:.git/config branch.master.remote=origin
local file:.git/config branch.master.merge=refs/heads/master$ git config —show-scope —get-regexp ‘diff.*’
global diff.statgraphwidth 35
local diff.colormoved plain$ git config —global —unset diff.statgraphwidth
- V nastaveniach viazania Povolené je používanie mask v URL. Akékoľvek nastavenia HTTP a prihlasovacie údaje v Gite môžu byť nastavené pre všetky pripojenia (http.extraHeader, credential.helper), ako aj pre pripojenia viazané na URL (credential.https://example.com.helper, credential.https://example.com.helper). Doteraz sa používanie takých masiek, ako je *.example.com, povoľovalo len pre nastavenia HTTP, ale nebolo podporované pre viazanie prihlasovacích údajov. V Gite 2.26 sa tieto rozdiely odstránili, a napríklad pre viazanie mena používateľa na všetky subdomény je teraz možné uviesť:
[credential «https://*.example.com»]
username = ttaylorr
- Pokračovalo sa v rozširovaní experimentálnej podpory pre čiastočné klonovanie (partial clones), ktoré umožňuje prenášať len časť dát a pracovať s neúplnou kópiou repozitára. V novej verzii bola pridaná nová príkazová sekcia „git sparse-checkout add“, ktorá umožňuje pridávať jednotlivé adresáre na to, aby sa operácia „checkout“ uplatnila iba na časť pracovného stromu, namiesto uvádzania všetkých podobných adresárov naraz pomocou príkazu „git sparse-checkout set“ (je možné pridávať jeden adresár, bez opakovaného zadávania celého zoznamu každý raz).
Napríklad pre klonovanie repozitára git/git bez prenosu blobov, obmedzením kontroly len na koreňový adresár pracovnej kópie a oddeleným označením pre extrakciu adresárov „t“ a „Documentation“ môžete uviesť:$ git clone —filter=blob:none —sparse git@github.com:git/git.git
$ cd git
$ git sparse-checkout init —cone$ git sparse-checkout add t
….
$ git sparse-checkout add Documentation
….
$ git sparse-checkout list
Documentation
t - Výrazne sa zvýšil výkon príkazu „git grep“, ktorý sa používa na vyhľadávanie ako v aktuálnom obsahu repozitára, tak aj v historických revíziách. Na urýchlenie vyhľadávania sa povoľovalo skenovanie obsahu pracovného stromu s použitím viacerých vlákien („git grep —threads“), ale vyhľadávanie v historických revíziách bolo jednovláknové. Teraz sa toto obmedzenie odstránilo prostredníctvom implementácie možnosti paralelizácie operácií čítania zo skladu objektov. Predvolene sa počet vlákien nastavuje na počet jadier CPU, čo vo väčšine prípadov teraz nevyžaduje explicitné nastavenie voľby „—threads“.
- Pridaná podpora automatického dopĺňania vstupu subpríkazov, ciest, odkazov a ďalších argumentov príkazu „git worktree“, ktorý umožňuje pracovať s viacerými pracovnými kópiami repozitára.
- Pridaná podpora jasných farieb, pre ktoré sú k dispozícii ANSI escape sekvencie. Napríklad v nastaveniach farieb zvýraznenia „git config —color“ alebo „git diff —color-moved“ cez možnosť „—format“ pre jasne modrú môžete uvádzať „%C(brightblue)“.
- Pridaná nová verzia skriptu , zabezpečujúceho integráciu s mechanizmom na urýchlenie sledovania zmien súborov a objavenia nových súborov. Po aktualizácii git je potrebné hook v repozitári.
- Pridané optimalizácie na urýchlenie operácií čiastočného klonovania (partial clones), spojené s aplikovaním bitmapových máp
(bitmap machinery) na vyhnutie sa úplnému prehľadávaniu všetkých objektov počas filtrovania výstupu. Kontrola blobov (—filter=blob:none a —filter=blob:limit=n) pri čiastočnom klonovaní sa teraz vykonáva
podstatne rýchlejšie. GitHub oznámil aplikáciu patchov s týmito optimalizáciami a experimentálnu podporu čiastočného klonovania. - Príkaz „git rebase“ bol prevedený na iný backend, ktorý predvolene používa mechanizmus ‘merge’ (predtým sa používal pre „rebase -i“) namiesto ‘patch+apply’. V niektorých detailoch sa backendy líšia, napríklad po pokračovaní operácie po vyriešení konfliktu (git rebase —continue) nový backend ponúka možnosť upraviť správu commitu, zatiaľ čo starý jednoducho použil starú správu. Na návrat k starému správaniu je možné použiť možnosť „—apply“ alebo nastaviť konfiguračnú premennú ‘rebase.backend’ na hodnotu ‘apply’.
- Príklad spracovateľa parametrov autentifikácie zadaných prostredníctvom .netrc bol upravený do podoby, ktorá je pripravená na použitie hneď.
- Pridané nastavenie gpg.minTrustLevel na určenie minimálnej úrovne dôvery pre rôzne prvky vykonávajúce overenie digitálneho podpisu.
- V „git rm“ a „git stash“ bola pridaná možnosť „—pathspec-from-file“.
- Pokračovalo v zdokonaľovaní testovacích súborov v rámci prípravy na prechod na hashovací algoritmus SHA-2 namiesto SHA-1.
Zdroj: opennet.ru
