Izdanje distribuiranog sustava kontrole izvora Git 2.26

Dostupno izdanje distribuiranog sustava kontrole izvora Git 2.26.0. Git je jedan od najpopularnijih, pouzdanih i visokoučinkovitih sustava za kontrolu verzija, koji pruža fleksibilne nelinearne razvojne alate temeljene na grananju i spajanju. Kako bi se osigurala cjelovitost povijesti i otpornost na retroaktivne promjene, implicitno hashiranje cijele prethodne povijesti koristi se u svakom predanju; također je moguće certificirati pojedinačne oznake i predaje digitalnim potpisima programera.

U usporedbi s prethodnim izdanjem, nova verzija je uključivala 504 promjena, u pripremi su sudjelovala 64 programera, od kojih je 12 prvi put sudjelovalo u razvoju. Glavni inovacije:

  • Zadana vrijednost je promijenjena druga verzija Git komunikacijski protokol, koji se koristi kada se klijent daljinski povezuje s Git poslužiteljem. Druga verzija protokola poznata je po pružanju mogućnosti filtriranja grana i oznaka na strani poslužitelja, vraćajući skraćeni popis poveznica klijentu. Prethodno bi svaka naredba povlačenja uvijek slala klijentu potpuni popis referenci u cijelom repozitoriju, čak i kada je klijent ažurirao samo jednu granu ili provjeravao je li njegova kopija repozitorija ažurna. Još jedna značajna inovacija je mogućnost dodavanja novih mogućnosti protokolu kako nova funkcionalnost postaje dostupna u kompletu alata. Kod klijenta ostaje kompatibilan sa starim protokolom i može nastaviti raditi s novim i starim poslužiteljima, automatski se vraćajući na prvu verziju ako poslužitelj ne podržava drugu.
  • Naredbi “git config” dodana je opcija “-show-scope” koja olakšava prepoznavanje mjesta gdje su određene postavke definirane. Git vam omogućuje da definirate postavke na različitim mjestima: u repozitoriju (.git/info/config), u korisničkom direktoriju (~/.gitconfig), u konfiguracijskoj datoteci za cijeli sustav (/etc/gitconfig) i putem naredbe opcije linije i varijable okoline. Prilikom izvršavanja “git config” prilično je teško razumjeti gdje je točno definirana željena postavka. Za rješavanje ovog problema bila je dostupna opcija “--show-origin”, ali ona pokazuje samo put do datoteke u kojoj je definirana postavka, što je korisno ako namjeravate uređivati ​​datoteku, ali ne pomaže ako trebate promijeniti vrijednost putem “git config” koristeći opcije "--system", "--global" ili "-local". Nova opcija "--show-scope" prikazuje kontekst definicije varijable i može se koristiti u kombinaciji s -show-origin:

    $ git --list --show-scope --show-origin
    globalna datoteka:/home/user/.gitconfig diff.interhunkcontext=1
    globalna datoteka:/home/user/.gitconfig push.default=trenutno
    […] local file:.git/config branch.master.remote=origin
    lokalna datoteka:.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

  • U postavkama vezanja vjerodajnice Dopuštena je upotreba maski u URL-ovima. Sve HTTP postavke i vjerodajnice u Gitu mogu se postaviti i za sve veze (http.extraHeader, credential.helper) i za veze temeljene na URL-u (credential.https://example.com.helper, credential.https: //example. com.pomoćnik). Do sada su zamjenski znakovi kao što je *.example.com bili dopušteni samo za HTTP postavke, ali nisu bili podržani za vezanje vjerodajnica. U Gitu 2.26 te su razlike eliminirane i, na primjer, za vezanje korisničkog imena za sve poddomene sada možete navesti:

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

    korisničko ime = ttaylorr

  • Nastavlja se proširenje eksperimentalne podrške za djelomično kloniranje (djelomični klonovi), što vam omogućuje prijenos samo dijela podataka i rad s nepotpunom kopijom repozitorija. Novo izdanje dodaje novu naredbu "git sparse-checkout add", koja vam omogućuje dodavanje pojedinačnih direktorija za primjenu operacije "checkout" samo na dio radnog stabla, umjesto ispisivanja svih takvih direktorija odjednom putem naredbe "git sparse-checkout set" (možete dodati jedan po jedan direktorij, bez ponovnog navođenja cijelog popisa svaki put).
    Na primjer, za kloniranje git/git repozitorija bez predaje blobova, ograničavajući odjavu samo na korijenski direktorij radne kopije i odvojeno označavajući odjavu za direktorije "t" i "Documentation", možete navesti:

    $ git clone --filter=blob:none --sparse [e-pošta zaštićena]:git/git.git

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

    $ git sparse-checkout add t
    ....
    $ git sparse-checkout add Dokumentacija
    ....
    $ git sparse-checkout lista
    Dokumentacija
    t

  • Izvedba naredbe “git grep”, koja se koristi za pretraživanje trenutnog sadržaja repozitorija i povijesnih revizija, značajno je poboljšana. Kako bi se ubrzalo pretraživanje, bilo je moguće skenirati sadržaj radnog stabla koristeći više niti (“git grep –threads”), ali je pretraga u povijesnim revizijama bila jednonitna. Sada je to ograničenje uklonjeno implementacijom mogućnosti paraleliziranja operacija čitanja iz pohrane objekta. Prema zadanim postavkama, broj niti je postavljen jednak broju CPU jezgri, što sada u većini slučajeva ne zahtijeva eksplicitno postavljanje opcije “-threads”.
  • Dodana je podrška za automatsko dovršavanje unosa podnaredbi, staza, veza i drugih argumenata naredbe “git worktree”, što vam omogućuje rad s nekoliko radnih kopija repozitorija.
  • Dodana podrška za svijetle boje koje imaju ANSI izlazne sekvence. Na primjer, u postavkama za istaknute boje “git config –color” ili “git diff –color-moved” možete odrediti “%C(brightblue)” putem opcije “--format” za svijetlo plavu.
  • Dodana nova verzija skripte fsmonitor-čuvar, pružajući integraciju s mehanizmom Čuvar Facebooka kako bi se ubrzalo praćenje promjena datoteka i pojavljivanje novih datoteka. Nakon ažuriranja potreban je git zamijeniti kuka u spremištu.
  • Dodane su optimizacije za ubrzavanje djelomičnih klonova pri korištenju bitmapa
    (strojevi za bitmape) kako biste izbjegli potpunu pretragu svih objekata prilikom filtriranja izlaza. Sada se provodi provjera blobova (—filter=blob:none i —filter=blob:limit=n) tijekom djelomičnog kloniranja
    znatno brže. GitHub je najavio zakrpe s ovim optimizacijama i eksperimentalnu podršku za djelomično kloniranje.

  • Naredba "git rebase" premještena je u drugu pozadinu, koristeći zadani mehanizam "spoji" (prethodno korišten za "rebase -i") umjesto "patch+apply". Pozadine se razlikuju u nekim malim stvarima, na primjer, nakon nastavka operacije nakon rješavanja sukoba (git rebase --continue), nova pozadina nudi uređivanje poruke predaje, dok je stara jednostavno koristila staru poruku. Za povratak na staro ponašanje možete upotrijebiti opciju "--apply" ili konfiguracijsku varijablu 'rebase.backend' postaviti na 'apply'.
  • Primjer rukovatelja za parametre provjere autentičnosti specificirane putem .netrc smanjen je na oblik prikladan za korištenje izvan okvira.
  • Dodana je postavka gpg.minTrustLevel za postavljanje minimalne razine povjerenja za različite elemente koji izvode provjeru digitalnog potpisa.
  • Dodana je opcija "--pathspec-from-file" u "git rm" i "git stash".
  • Nastavljeno je poboljšanje paketa testova u pripremi za prijelaz na algoritam raspršivanja SHA-2 umjesto SHA-1.

Izvor: opennet.ru

Dodajte komentar