Lansarea versiunii 2.35 a sistemului de gestionare a versiunilor Git

După două luni de dezvoltare, a fost lansată versiunea distribuită 2.35 a sistemului de gestionare a versiunilor Git. Git este unul dintre cele mai populare, fiabile și performante sisteme de gestionare a versiunilor, oferind instrumente flexibile pentru dezvoltarea neliniară, bazate pe ramificare și îmbinare a ramurilor. Pentru a asigura integritatea istoriei și rezistența la modificările 'retroactive', se utilizează un hash implicit al întregii istorii anterioare în fiecare commit, iar semnăturile digitale ale dezvoltatorilor pot fi confirmate pentru etichete și commituri individuale.

Comparativ cu versiunea anterioară, noua versiune include 494 de modificări, realizate cu participarea a 93 de dezvoltatori, dintre care 35 au participat pentru prima dată. Principalele noutăți:

  • Au fost extinse capacitățile utilizării cheilor SSH pentru a semna obiectele Git cu semnături digitale. Pentru a distinge durata de valabilitate a mai multor chei, a fost adăugată suportul pentru directivele OpenSSH 'valid-before' și 'valid-after', care permit operarea corectă cu semnăturile după rotirea cheii unui dezvoltator. Anterior, apărea problema separării semnăturilor vechi și noi — dacă se ștergea cheia veche, nu se putea verifica semnăturile realizate cu aceasta, iar dacă se păstra, rămânea posibilitatea de a crea semnături noi cu cheia veche, înlocuită între timp cu o altă cheie. Cu ajutorul 'valid-before' și 'valid-after' se poate distinge domeniul de aplicare al cheilor pe baza timpului de creare a semnăturii.
  • În setarea merge.conflictStyle, care permite alegerea modei de prezentare a informațiilor despre conflicte la îmbinare, a fost adăugat suportul pentru modul 'zdiff3', care mută toate liniile standard, specificate la începutul sau sfârșitul conflictului, în afara zonei de conflict, permițând o prezentare mai compactă a informațiilor.
  • Comanda „git stash” a fost adăugată cu opțiunea „—staged”, care permite ascunderea doar a modificărilor adăugate în index, de exemplu, în situații în care este necesar să se amâne temporar o parte din modificările complexe pentru a adăuga mai întâi ceea ce este deja gata, lăsând restul pentru mai târziu. Această opțiune este similară cu comanda „git commit”, care înregistrează doar modificările plasate în index, dar, în loc să creeze un nou commit, „git stash —staged” salvează rezultatul într-o zonă temporară stash. După ce modificările devin necesare, acestea pot fi returnate cu comanda „git stash pop”.
  • În comanda „git log” a fost adăugat un nou specificator de format „—format=%(describe)”, care permite combinarea ieșirii „git log” cu rezultatul executării comenzii „git describe”. Parametrii pentru „git describe” sunt specificați direct în interiorul specificatorului („—format=%(describe:match=,exclude=)”), în care pot fi incluse și etichete scurte („—format=%(describe:tags=)”) și stabilită numărul de caractere hexadecimale pentru identificarea obiectelor („—format=%(describe:abbrev=)”). De exemplu, pentru a afișa ultimele 8 commit-uri, ale căror etichete nu au eticheta de candidat pentru lansare, și pentru a specifica identificatori de 8 caractere, se poate folosi comanda: $ git log -8 —format='%(describe:exclude=*-rc*,abbrev=13)’ v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642-gb56bd95bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • În configurarea user.signingKey a fost implementată suportul pentru noi tipuri de chei, fără a se limita la tipul „ssh-” și la specificarea întregului calea fișierului pentru cheie. Tipurile alternative sunt definite cu prefixul „key::”, de exemplu, „key::ecdsa-sha2-nistp256” pentru chei ECDSA.
  • S-a îmbunătățit vizibil viteza de generare a listei de modificări în modul „—histogram”, precum și la utilizarea opțiunii „—color-moved-ws”, care controlează evidențierea spațiilor în diff-uri colorate.
  • În comanda „git jump”, folosită pentru a oferi lui Vim informații despre tranzițiile exacte la poziția căutată în fișier în timpul rezolvării conflictelor de fuziune, vizualizării diferențelor sau efectuării unei căutări, a fost oferită posibilitatea de a restricționa conflictele de fuziune acoperite. De exemplu, pentru a restricționa operațiile doar la directorul „foo”, se poate specifica „git jump merge — foo”, iar pentru a exclude directorul „Documentation” din procesare – „git jump merge — ':^Documentation'”
  • A fost realizată o standardizare a utilizării tipului „size_t” în loc de „unsigned long” pentru valorile care reprezintă dimensiunea obiectelor, ceea ce a permis aplicarea filtrelor „clean” și „smudge” pe fișiere mai mari de 4 GB pe toate platformele, inclusiv pe cele cu modelul de date LLP64, unde tipul „unsigned long” este limitat la 4 octeți.
  • Comanda „git am” a fost extinsă cu opțiunea „—empty=(stop|drop|keep)”, permițând alegerea comportamentului pentru e-mailurile goale care nu conțin patch-uri. Valoarea „stop” va duce la încheierea întregii operațiuni de aplicare a patch-urilor, „drop” va sări peste patch-ul gol, iar „keep” va crea un commit gol.
  • Comenzile „git reset”, „git diff”, „git blame”, „git fetch”, „git pull” și „git ls-files” au fost actualizate pentru a susține indecșii parțiali (sparse index), ceea ce permite îmbunătățirea performanței și economisirea de spațiu în repozitoarele în care se efectuează operațiuni de clonare parțială (sparse-checkout).
  • Comanda „git sparse-checkout init” a fost declarată învechită, fiind recomandat să se folosească „git sparse-checkout set”.
  • S-a adăugat o implementare inițială a noului backend „reftable” pentru stocarea referințelor, cum ar fi ramurile și etichetele, în repozitoriu. Noua soluție folosește un stocare pe blocuri utilizată de proiectul JGit și este optimizată pentru stocarea unui număr foarte mare de referințe. Backend-ul nu este încă integrat cu sistemul de referințe (refs) și nu este pregătit pentru utilizarea practică.
  • Paleta de culori a comenzii „git grep” a fost aliniată cu instrumentul GNU grep.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster