Vydanie distribuovaného zdrojového riadiaceho systému Git 2.26

K dispozícii uvoľnenie distribuovaného systému riadenia zdroja Git 2.26.0. 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í. 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 a taktiež je možné jednotlivé tagy a commity certifikovať digitálnymi podpismi vývojárov.

Oproti predchádzajúcemu vydaniu obsahovala nová verzia 504 zmien, pripravených za účasti 64 vývojárov, z ktorých 12 sa podieľalo na vývoji po prvýkrát. Hlavné inovácie:

  • Predvolené nastavenie bolo prepnuté na druhá verzia Komunikačný protokol Git, ktorý sa používa, keď sa klient vzdialene pripája k serveru Git. Druhá verzia protokolu je pozoruhodná tým, že poskytuje možnosť filtrovať vetvy a značky na strane servera, pričom klientovi vracia skrátený zoznam odkazov. Predtým každý príkaz pull vždy poslal klientovi úplný zoznam referencií v celom úložisku, aj keď klient aktualizoval iba jednu pobočku alebo kontroloval, či je jeho kópia úložiska aktuálna. Ďalšou pozoruhodnou inováciou je možnosť pridávať do protokolu nové funkcie, keď sú v súprave nástrojov dostupné nové funkcie. Klientsky kód zostáva kompatibilný so starým protokolom a môže pokračovať v práci s novými aj starými servermi, pričom sa automaticky vráti k prvej verzii, ak server nepodporuje druhú.
  • Do príkazu „git config“ bola pridaná možnosť „-show-scope“, ktorá uľahčuje identifikáciu miesta, kde sú definované určité nastavenia. Git vám umožňuje definovať nastavenia na rôznych miestach: v úložisku (.git/info/config), v používateľskom adresári (~/.gitconfig), v konfiguračnom súbore pre celý systém (/etc/gitconfig) a cez príkaz možnosti linky a premenné prostredia. Pri vykonávaní „git config“ je pomerne ťažké pochopiť, kde presne je požadované nastavenie definované. Na vyriešenie tohto problému bola k dispozícii možnosť „--show-origin“, ktorá však zobrazuje iba cestu k súboru, v ktorom je nastavenie definované, čo je užitočné, ak chcete súbor upraviť, ale nepomôže, ak je potrebné zmeniť hodnotu cez „git config“ pomocou možností „--system“, „--global“ alebo „-local“. Nová voľba "--show-scope" zobrazuje kontext definície premennej a možno ju použiť v spojení s -show-origin:

    $ git --list --show-scope --show-origin
    globálny súbor:/home/user/.gitconfig diff.interhunkcontext=1
    globálny súbor:/home/user/.gitconfig push.default=current
    […] lokálny súbor:.git/config branch.master.remote=origin
    lokálny súbor:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    globálny rozdiel.šírka štatistického grafu 35
    lokálny rozdiel.farebne posunutá rovina

    $ git config --global --unset diff.statgraphwidth

  • V nastaveniach viazania poverenia Používanie masiek v adresách URL je povolené. Akékoľvek nastavenia HTTP a poverenia v Git je možné nastaviť pre všetky pripojenia (http.extraHeader, credential.helper) aj pre pripojenia založené na adrese URL (credential.https://example.com.helper, credential.https: //example. com.helper). Doteraz boli zástupné znaky ako *.example.com povolené len pre nastavenia HTTP, ale neboli podporované pre viazanie poverení. V Git 2.26 sú tieto rozdiely eliminované a napríklad na naviazanie používateľského mena na všetky subdomény môžete teraz zadať:

    [poverenie "https://*.example.com"]

    užívateľské meno = ttaylorr

  • Pokračuje rozširovanie experimentálnej podpory čiastočného klonovania (čiastočné klony), ktoré umožňuje prenášať len časť dát a pracovať s neúplnou kópiou úložiska. Nové vydanie pridáva nový príkaz „git sparse-checkout add“, ktorý vám umožňuje pridať jednotlivé adresáre, aby sa operácia „checkout“ aplikovala iba na časť pracovného stromu, namiesto vypisovania všetkých takýchto adresárov naraz pomocou príkazu „git sparse-checkout set" (môžete pridať jeden po druhom jeden adresár bez toho, aby ste zakaždým znova zadávali celý zoznam).
    Napríklad, ak chcete klonovať úložisko git/git bez potvrdenia objektov BLOB, obmedzenia checkoutu len na koreňový adresár pracovnej kópie a samostatného označenia checkoutu pre adresáre „t“ a „Documentation“, môžete zadať:

    $ git clone --filter=blob:none --sparse [chránené e-mailom]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout pridať t
    ....
    $ git sparse-checkout pridať dokumentáciu
    ....
    $ git zoznam sparse-checkout
    dokumentácia
    t

  • Výkon príkazu „git grep“, ktorý sa používa na vyhľadávanie aktuálneho obsahu úložiska aj historických revízií, sa výrazne zlepšil. Pre urýchlenie vyhľadávania bolo možné skenovať obsah pracovného stromu pomocou viacerých vlákien („git grep –threads“), no vyhľadávanie v historických revíziách bolo jednovláknové. Teraz bolo toto obmedzenie odstránené implementáciou schopnosti paralelizovať operácie čítania z úložiska objektov. V predvolenom nastavení je počet vlákien nastavený na počet jadier CPU, čo teraz vo väčšine prípadov nevyžaduje explicitné nastavenie možnosti „-threads“.
  • Pridaná podpora pre automatické dopĺňanie vstupu čiastkových príkazov, ciest, odkazov a ďalších argumentov príkazu „git worktree“, čo vám umožňuje pracovať s niekoľkými pracovnými kópiami úložiska.
  • Pridaná podpora pre jasné farby, ktoré majú sekvencie escape ANSI. Napríklad v nastaveniach farieb zvýraznenia „git config –color“ alebo „git diff –color-moved“ môžete zadať „%C(svetlomodrá)“ prostredníctvom možnosti „--format“ pre jasnú modrú.
  • Pridaná nová verzia skriptu fsmonitor-watchman, poskytujúce integráciu s mechanizmom Facebook Watchman na urýchlenie sledovania zmien súborov a vzhľadu nových súborov. Po aktualizácii sa vyžaduje git nahradiť háčik v úložisku.
  • Pridané optimalizácie na urýchlenie čiastočných klonov pri používaní bitmapy
    (bitmapová mašinéria), aby sa predišlo úplnému prehľadaniu všetkých objektov pri filtrovaní výstupu. Kontrola kvapôčok (—filter=blob:none a —filter=blob:limit=n) počas čiastočného klonovania sa teraz vykonáva
    výrazne rýchlejšie. GitHub oznámil opravy s týmito optimalizáciami a experimentálnu podporu čiastočného klonovania.

  • Príkaz „git rebase“ bol presunutý do iného backendu pomocou predvoleného mechanizmu „merge“ (predtým používaného pre „rebase -i“) namiesto „patch+apply“. Backendy sa v niektorých malých veciach líšia, napríklad po pokračovaní operácie po vyriešení konfliktu (git rebase --continue) nový backend ponúka úpravu správy odovzdania, zatiaľ čo starý jednoducho použil starú správu. Ak sa chcete vrátiť k starému správaniu, môžete použiť možnosť „--apply“ alebo nastaviť konfiguračnú premennú „rebase.backend“ na „apply“.
  • Príklad obsluhy pre autentifikačné parametre špecifikované cez .netrc bol zredukovaný na formu vhodnú na použitie hneď po vybalení.
  • Pridané nastavenie gpg.minTrustLevel na nastavenie minimálnej úrovne dôveryhodnosti pre rôzne prvky, ktoré vykonávajú overovanie digitálneho podpisu.
  • Pridaná možnosť „--pathspec-from-file“ do „git rm“ a „git stash“.
  • Vylepšovanie testovacích sád pokračovalo v rámci prípravy na prechod na SHA-2 hašovací algoritmus namiesto SHA-1.

Zdroj: opennet.ru

Pridať komentár