Objava distribuiranog sistema upravljanja izvornih kodova Git 2.26

Dostupno izdanje distribuiranog sustava za upravljanje izvorom Git 2.26.0. Git je jedan od najpopularnijih, pouzdanih i visokoučinkovitih sustava za upravljanje verzijama, koji pruža fleksibilne alate za nelinearni razvoj, zasnovan na grananju i spajanju grana. Kako bi se osigurala cjelovitost povijesti i otpornosti na promjene "unatrag", koristi se implicitno haširanje cijele prethodne povijesti u svakom commitu. Također je moguće ovjeravanje digitalnim potpisima programera pojedinih oznaka i commit-a.

U usporedbi s prethodnim izdanjem, u novu verziju usvojeno je 504 promjena, pripremljenih uz sudjelovanje 64 programera, od kojih je 12 prvi put sudjelovalo u razvoju. Glavne novosti:

  • Ostvaren je prijelaz po defaultu na drugoj verziji komunikacijskog protokola Git, koji se koristi prilikom udaljenog povezivanja klijenta s Git poslužiteljem. Druga verzija protokola ističe se pružanjem mogućnosti filtriranja grana i oznaka na strani poslužitelja, uz prikaz skraćenog popisa poveznica klijentu. Ranije je prilikom izvršavanja bilo koje naredbe za preuzimanje klijent uvijek dobivao cijeli popis poveznica u cijelom repozitoriju, čak i kada je klijent ažurirao samo jednu granu ili provjeravao ažurnost svog repozitorija. Druga značajna novost je mogućnost dodavanja novih funkcionalnosti u protokol kako se nove mogućnosti pojavljuju u alatu. Klijentski kod 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.
  • U komandnu „git config“ dodana je opcija „—show-scope“ koja olakšava otkrivanje mesta na kojem su određene postavke definisane. Git omogućava definisanje postavki na različitim mestima: u repozitorijumu (.git/info/config), u korisničkom direktorijumu (~/.gitconfig), u sistemskom konfiguracionom fajlu (/etc/gitconfig), kao i kroz opcije komandne linije i promenljive okruženja. Pri izvršavanju „git config“ teško je odrediti gde je tačno definisana tražena postavka. Za rešavanje ovog zadatka bila je dostupna opcija „—show-origin“, ali ona samo pokazuje putanju do fajla u kojem je postavka definisana, što je korisno kada se planira da se fajl izmeni, ali ne pomaže ako je potrebno promeniti vrednost putem „git config“ koristeći opcije „—system“, „—global“ ili „—local“. Nova opcija „—show-scope“ prikazuje kontekst definisanja promenljivih i može se koristiti zajedno sa „—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

  • U postavkama vezivanja naloga dozvoljeno je korišćenje maski u URL-ovima. Sve HTTP postavke i korisnički podaci u Gitu mogu biti postavljeni kako za sve veze (http.extraHeader, credential.helper), tako i za veze koje su vezane za URL (credential.https://example.com.helper, credential.https://example.com.helper). Dotad je korišćenje maski, kao što je *.example.com, bilo dozvoljeno samo za HTTP postavke, ali nije bilo podržano za vezivanje korisničkih podataka. U Git 2.26 ovi su nedostaci otklonjeni i, na primer, za vezivanje korisničkog imena za sve poddomene sada se može navesti:

    [credential „https://*.example.com“]

    username = ttaylorr

  • Nastavljeno je proširenje eksperimentalne podrške za delimično kloniranje (partial clones), koje omogućava prenos samo dela podataka i rad sa nepotpunom kopijom repozitorijuma. U novom izdanju dodata je nova komanda „git sparse-checkout add“, koja omogućava dodavanje pojedinačnih direktorijuma za primenu operacije „checkout“ samo na deo radnog stabla, umesto nabrajanja svih sličnih direktorijuma odjednom kroz komandu „git sparse-checkout set“ (može se dodavati po jedan direktorijum, bez ponovnog zadavanja cele liste svaki put).
    Na primjer, za kloniranje repozitorija git/git bez prijenosa blobova, ograničavajući provjeru samo na korijenskom direktoriju radne kopije i s posebnim oznakama za vađenje direktorija 't' i 'Documentation', možete navesti:

    $ 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

  • Značajno je unaprijeđeno performanse komande 'git grep', koja se koristi za pretraživanje kako u trenutnom sadržaju repozitorija, tako i u povijesnim revizijama. Za ubrzanje pretraživanja bilo je dopušteno skeniranje sadržaja radnog stabla korištenjem više niti ('git grep —threads'), ali pretraživanje u povijesnim revizijama bilo je jednonitno. Sada je ovo ograničenje uklonjeno implementacijom mogućnosti paralelizacije operacija čitanja iz spremišta objekata. Prema zadanim postavkama, broj niti postavlja se na broj CPU jezgri, što u većini slučajeva sada ne zahtijeva eksplicitno postavljanje opcije '—threads'.
  • Dodana je podrška za automatsko dovršavanje unosa podkomandi, putanja, veza i drugih argumenata komande 'git worktree', koja omogućuje rad s više radnih kopija repozitorija.
  • Dodana je podrška za svijetle boje, za koje postoje ANSI escape sekvence. Na primjer, u postavkama boja za isticanje 'git config —color' ili 'git diff —color-moved' putem opcije '—format' za svijetlo plavu boju može se navesti '%C(brightblue)'.
  • Dodana je nova verzija skripta fsmonitor-watchman, koja omogućuje integraciju s mehanizmom Facebook Watchman za ubrzavanje praćenja promjena datoteka i pojave novih datoteka. Nakon ažuriranja git potrebno je zamijeniti hook u repozitoriju.
  • Dodate su optimizacije za ubrzanje operacija djelomičnog kloniranja (partial clones), povezane s primjenom bitmap mehanizma
    za izbjegavanje potpunog pretraživanja svih objekata tijekom filtriranja isporuke. Provjera na blobove ('—filter=blob:none' i '—filter=blob:limit=n') pri djelomičnom kloniranju sada se provodi
    značajno brže. GitHub je najavio primjenu zakrpa s tim optimizacijama i eksperimentalnu podršku djelomičnom kloniranju.
  • U komandni «git rebase» prebačen je na drugu pozadinu koja po defaultu koristi mehanizam ‘merge’ (ranije korišten za «rebase -i») umjesto ‘patch+apply’. U nekim detaljima pozadine se razlikuju, na primjer, nakon nastavka operacije nakon rješavanja sukoba (git rebase —continue) nova pozadina nudi mogućnost uređivanja poruke commit-a, dok je stara samo koristila staru poruku. Za vraćanje starog ponašanja može se koristiti opcija «—apply» ili postaviti konfiguracijska varijabla ‘rebase.backend’ na vrijednost ‘apply’.
  • Primjer handlera za autentifikacijske parametre, postavljenih putem .netrc, prikazan je u obliku spremnom za korištenje iz kutije.
  • Dodana je postavka gpg.minTrustLevel za definiranje minimalne razine povjerenja za različite komponente koje provode provjeru digitalnog potpisa.
  • U «git rm» i «git stash» dodana je opcija «—pathspec-from-file».
  • Nastavljeno je unapređenje testnih setova u okviru pripreme za prelazak na algoritam hashiranja SHA-2 umjesto SHA-1.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster