Izdanje distribuiranog sistema izvorne kontrole Git 2.26

Dostupno oslobađanje distribuiranog sistema kontrole izvora git 2.26.0. Git je jedan od najpopularnijih, najpouzdanijih i najučinkovitijih sistema kontrole verzija, koji pruža fleksibilne nelinearne razvojne alate zasnovane na grananju i spajanju. Da bi se osigurao integritet istorije i otpornost na retroaktivne promene, koristi se implicitno heširanje celokupne prethodne istorije u svakom urezivanju, a moguće je i sertifikovati pojedinačne oznake i urezivanja digitalnim potpisima programera.

U odnosu na prethodno izdanje, u novu verziju, pripremljenu uz učešće 504 programera, prihvaćeno je 64 izmjena, od kojih je 12 prvi put učestvovalo u razvoju. Glavni inovacije:

  • Podrazumevano je prebačeno na druga verzija Git komunikacioni protokol, koji se koristi kada se klijent daljinski povezuje na Git server. Druga verzija protokola je značajna po tome što pruža mogućnost filtriranja grana i oznaka na strani servera, vraćajući skraćenu listu veza klijentu. Ranije bi bilo koja komanda za povlačenje uvijek slala klijentu punu listu referenci u cijelom spremištu, čak i kada je klijent ažurirao samo jednu granu ili provjeravao da li je njihova kopija spremišta ažurirana. Još jedna značajna inovacija je mogućnost dodavanja novih mogućnosti protokolu kako nova funkcionalnost postaje dostupna u kompletu alata. Klijentski kod ostaje kompatibilan sa starim protokolom i može nastaviti raditi i sa novim i sa starim serverima, automatski se vraćajući na prvu verziju ako server ne podržava drugu.
  • Opcija “-show-scope” je dodana naredbi “git config”, što olakšava identifikaciju mjesta gdje su određene postavke definirane. Git vam omogućava da definirate postavke na različitim mjestima: u spremištu (.git/info/config), u korisničkom direktoriju (~/.gitconfig), u konfiguracijskoj datoteci za cijeli sistem (/etc/gitconfig) i preko komande opcije linije i varijable okruženja. Prilikom izvršavanja “git config” prilično je teško razumjeti gdje je tačno željena postavka definirana. Za rješavanje ovog problema bila je dostupna opcija “--show-origin”, ali ona samo pokazuje putanju do datoteke u kojoj je definirana postavka, što je korisno ako namjeravate urediti datoteku, ali ne pomaže ako potrebno je 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 zajedno sa -show-origin:

    $ git --list --show-scope --show-origin
    globalni fajl:/home/user/.gitconfig diff.interhunkcontext=1
    globalni fajl:/home/user/.gitconfig push.default=current
    […] lokalna datoteka:.git/config branch.master.remote=origin
    lokalni fajl:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'razl.*'
    globalna diff.statgraphwidth 35
    lokalni diff.colormoved običan

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

  • U postavkama vezivanja vjerodajnice Upotreba maski u URL-ovima je dozvoljena. Bilo koje HTTP postavke i vjerodajnice u Gitu mogu se postaviti i za sve veze (http.extraHeader, credential.helper) i za veze zasnovane na URL-u (credential.https://example.com.helper, credential.https: //example. com.helper). Do sada su zamjenski znakovi kao što je *.example.com bili dozvoljeni samo za HTTP postavke, ali nisu bili podržani za povezivanje vjerodajnica. U Gitu 2.26, ove razlike su eliminisane i, na primjer, da biste povezali korisničko ime za sve poddomene, sada možete odrediti:

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

    korisničko ime = ttaylorr

  • Proširenje eksperimentalne podrške za djelomično kloniranje (djelomični klonovi) se nastavlja, omogućavajući vam prijenos samo dijela podataka i rad s nekompletnom kopijom spremišta. Novo izdanje dodaje novu naredbu "git sparse-checkout add", koja vam omogućava da dodate pojedinačne direktorije da biste primijenili operaciju "checkout" samo na dio radnog stabla, umjesto da navedete sve takve direktorije odjednom putem naredbe "git redak-checkout set" (možete dodati jedan po jedan direktorij, bez ponovnog specificiranja cijele liste svaki put).
    Na primjer, da biste klonirali git/git spremište bez urezivanja blob-ova, ograničavajući checkout samo na korijenski direktorij radne kopije i posebno označavajući checkout za direktorije "t" i "Documentation", možete specificirati:

    $ git clone --filter=blob:none --sparse [email zaštićen]:git/git.git

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

    $ git sparse-checkout add t
    ....
    $ git sparse-checkout add Dokumentacija
    ....
    $ git rijetka lista za odjavu
    Dokumentacija
    t

  • Performanse naredbe “git grep”, koja se koristi za pretraživanje i trenutnog sadržaja spremišta i istorijskih revizija, značajno je poboljšana. Da bi se ubrzala pretraga, bilo je moguće skenirati sadržaj radnog stabla koristeći više niti (“git grep –threads”), ali je pretraga u istorijskim revizijama bila jednonitna. Sada je ovo ograničenje uklonjeno implementacijom mogućnosti paralelizacije operacija čitanja iz skladišta objekata. Po defaultu, broj niti je postavljen jednak broju CPU jezgara, što u većini slučajeva sada ne zahtijeva eksplicitno postavljanje opcije “-threads”.
  • Dodata podrška za automatsko dovršavanje unosa podnaredbi, putanja, veza i drugih argumenata naredbe “git worktree”, koja vam omogućava rad sa nekoliko radnih kopija spremišta.
  • Dodata podrška za svijetle boje koje imaju ANSI izlazne sekvence. Na primjer, u postavkama za boje isticanja “git config –color” ili “git diff –color-moved” možete odrediti “%C(brightblue)” putem opcije “--format” za svijetlo plavu.
  • Dodata nova verzija skripte fsmonitor-watchman, omogućavajući integraciju sa mehanizmom Facebook Watchman za ubrzavanje praćenja promjena datoteka i pojavljivanja novih datoteka. Nakon ažuriranja potreban je git zamijeniti kuka u spremištu.
  • Dodane optimizacije za ubrzavanje djelomičnih klonova kada se koriste bitmape
    (mašine za bitmape) kako bi se izbjegla potpuna pretraga svih objekata prilikom filtriranja izlaza. Provjera blobova (—filter=blob:none i —filter=blob:limit=n) tokom djelomičnog kloniranja se sada izvodi
    znatno brže. GitHub je najavio zakrpe s ovim optimizacijama i eksperimentalnom podrškom za djelomično kloniranje.

  • Komanda "git rebase" je premještena na drugu pozadinu koja koristi zadani mehanizam 'spajanja' (ranije korišten za "rebase -i") umjesto 'patch+apply'. Pozadine se razlikuju na neke male načine, na primjer, nakon nastavka operacije nakon rješavanja konflikta (git rebase --continue), novi backend nudi uređivanje poruke urezivanja, dok je stari jednostavno koristio staru poruku. Da biste se vratili na staro ponašanje, možete koristiti opciju "--apply" ili postaviti konfiguracijsku varijablu 'rebase.backend' na 'apply'.
  • Primjer rukovatelja za parametre autentikacije specificirane preko .netrc je svedena na oblik pogodan za korištenje izvan kutije.
  • Dodano je podešavanje gpg.minTrustLevel za postavljanje minimalnog nivoa povjerenja za različite elemente koji vrše verifikaciju digitalnog potpisa.
  • Dodata opcija "--pathspec-from-file" u "git rm" i "git stash".
  • Poboljšanje testnih paketa je nastavljeno u pripremi za prelazak na SHA-2 algoritam heširanja umjesto SHA-1.

izvor: opennet.ru

Dodajte komentar