Lansarea sistemului de control al surselor distribuite Git 2.26

Disponibil lansarea unui sistem distribuit de control al sursei git 2.26.0. Git este unul dintre cele mai populare, fiabile și de înaltă performanță sisteme de control al versiunilor, oferind instrumente flexibile de dezvoltare neliniară bazate pe ramificare și îmbinare. Pentru a asigura integritatea istoriei și rezistența la modificări retroactive, în fiecare commit este utilizat hashing implicit al întregului istoric anterior; de asemenea, este posibilă certificarea etichetelor individuale și commit-urilor cu semnăturile digitale ale dezvoltatorilor.

În comparație cu versiunea anterioară, noua versiune a inclus 504 modificări, pregătite cu participarea a 64 de dezvoltatori, dintre care 12 au participat pentru prima dată la dezvoltare. Principalul inovații:

  • Valoarea implicită a fost schimbată a doua versiune Protocolul de comunicare Git, care este utilizat atunci când un client se conectează de la distanță la un server Git. A doua versiune a protocolului este remarcabilă prin faptul că oferă capacitatea de a filtra ramuri și etichete pe partea serverului, returnând o listă scurtă de link-uri către client. Anterior, orice comandă de extragere trimitea întotdeauna clientului lista completă de referințe din întregul depozit, chiar și atunci când clientul actualiza doar o ramură sau verifica dacă copia lor a depozitului era actualizată. O altă inovație notabilă este capacitatea de a adăuga noi capabilități protocolului pe măsură ce noi funcționalități devin disponibile în setul de instrumente. Codul client rămâne compatibil cu vechiul protocol și poate continua să funcționeze atât cu serverele noi, cât și cu cele vechi, revenind automat la prima versiune dacă serverul nu o acceptă pe a doua.
  • Opțiunea „-show-scope” a fost adăugată la comanda „git config”, facilitând identificarea locului în care sunt definite anumite setări. Git vă permite să definiți setări în diferite locuri: în depozit (.git/info/config), în directorul de utilizatori (~/.gitconfig), în fișierul de configurare la nivel de sistem (/etc/gitconfig) și prin comandă opțiuni de linie și variabile de mediu. Când executați „git config” este destul de dificil de înțeles unde este definită exact setarea dorită. Pentru a rezolva această problemă, era disponibilă opțiunea „--show-origin”, dar arată doar calea către fișierul în care este definită setarea, ceea ce este util dacă intenționați să editați fișierul, dar nu vă ajută dacă trebuie să schimbați valoarea prin „git config” folosind opțiunile „--system”, „--global” sau „-local”. Noua opțiune „--show-scope” afișează contextul definiției variabilelor și poate fi utilizată împreună cu -show-origin:

    $ git --list --show-scope --show-origin
    fișier global:/home/user/.gitconfig diff.interhunkcontext=1
    fișier global:/home/user/.gitconfig push.default=current
    […] local file:.git/config branch.master.remote=origin
    fișier local:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    global diff.statgraphwidth 35
    dif. locală câmpie mutată de culoare

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

  • În setările de legare acreditările Este permisă utilizarea măștilor în adrese URL. Orice setări HTTP și acreditări din Git pot fi setate atât pentru toate conexiunile (http.extraHeader, credential.helper), cât și pentru conexiunile bazate pe URL (credential.https://example.com.helper, credential.https: //example). com.ajutor). Până acum, metacaracterele precum *.example.com erau permise numai pentru setările HTTP, dar nu erau acceptate pentru legarea acreditărilor. În Git 2.26, aceste diferențe sunt eliminate și, de exemplu, pentru a lega un nume de utilizator la toate subdomeniile, acum puteți specifica:

    [acreditare „https://*.example.com”]

    nume de utilizator = ttaylorr

  • Extinderea suportului experimental pentru clonarea parțială (clone parțiale) continuă, permițându-vă să transferați doar o parte din date și să lucrați cu o copie incompletă a depozitului. Noua versiune adaugă o nouă comandă „git sparse-checkout add”, care vă permite să adăugați directoare individuale pentru a aplica operația „checkout” doar unei părți din arborele de lucru, în loc să enumerați toate aceste directoare simultan prin comanda „git sparse-checkout set" (puteți adăuga unul câte unul director, fără a respecifica întreaga listă de fiecare dată).
    De exemplu, pentru a clona un depozit git/git fără a comite blob-uri, limitând verificarea doar la directorul rădăcină al copiei de lucru și pentru a marca separat verificarea pentru directoarele „t” și „Documentare”, puteți specifica:

    $ git clone --filter=blob:none --sparse [e-mail protejat]:git/git.git

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

    $ git sparse-checkout add t
    ....
    $ git sparse-checkout add Documentation
    ....
    $ git lista sparse-checkout
    Documentație
    t

  • Performanța comenzii „git grep”, folosită pentru a căuta atât conținutul actual al depozitului, cât și revizuirile istorice, a fost îmbunătățită semnificativ. Pentru a accelera căutarea, a fost posibilă scanarea conținutului arborelui de lucru folosind mai multe fire de execuție („git grep –threads”), dar căutarea în revizuirile istorice a fost cu un singur thread. Acum această limitare a fost eliminată prin implementarea capacității de a paraleliza operațiunile de citire din stocarea obiectelor. În mod implicit, numărul de fire este setat egal cu numărul de nuclee CPU, care în cele mai multe cazuri acum nu necesită setarea explicită a opțiunii „-threads”.
  • S-a adăugat suport pentru completarea automată a introducerii subcomenzilor, căilor, legăturilor și altor argumente ale comenzii „git worktree”, care vă permite să lucrați cu mai multe copii de lucru ale depozitului.
  • S-a adăugat suport pentru culori strălucitoare care au secvențe de evacuare ANSI. De exemplu, în setările pentru culorile evidențiate „git config –color” sau „git diff –color-moved” puteți specifica „%C(brightblue)” prin opțiunea „--format” pentru albastru strălucitor.
  • A fost adăugată o nouă versiune de script fsmonitor-vizor, oferind integrarea cu mecanismul Facebook Watchman pentru a accelera urmărirea modificărilor fișierelor și apariția unor fișiere noi. După actualizarea git este necesar înlocuiți cârlig în depozit.
  • Au fost adăugate optimizări pentru a accelera clonele parțiale atunci când utilizați hărți de bit
    (mașini bitmap) pentru a evita o căutare completă a tuturor obiectelor la filtrarea rezultatului. Verificarea blob-urilor (—filter=blob:none și —filter=blob:limit=n) în timpul clonării parțiale este acum efectuată
    semnificativ mai rapid. GitHub a anunțat patch-uri cu aceste optimizări și suport experimental pentru clonarea parțială.

  • Comanda „git rebase” a fost mutată într-un backend diferit, folosind mecanismul implicit „merge” (folosit anterior pentru „rebase -i”) în loc de „patch+apply”. Backend-urile diferă în câteva moduri mici, de exemplu, după ce continuă o operațiune după rezolvarea unui conflict (git rebase --continue), noul backend oferă editarea mesajului de commit, în timp ce cel vechi a folosit pur și simplu mesajul vechi. Pentru a reveni la vechiul comportament, puteți utiliza opțiunea „--apply” sau puteți seta variabila de configurare „rebase.backend” la „aplica”.
  • Un exemplu de handler pentru parametrii de autentificare specificați prin .netrc a fost redus la o formă adecvată pentru utilizare din cutie.
  • S-a adăugat setarea gpg.minTrustLevel pentru a seta nivelul minim de încredere pentru diferite elemente care efectuează verificarea semnăturii digitale.
  • S-a adăugat opțiunea „--pathspec-from-file” la „git rm” și „git stash”.
  • Îmbunătățirea suitelor de testare a continuat în pregătirea pentru tranziția la algoritmul de hashing SHA-2 în loc de SHA-1.

Sursa: opennet.ru

Adauga un comentariu