Lansarea sistemului de control al versiunilor Git 2.46

După trei luni de dezvoltare, a fost publicat release-ul sistemului distribuit de gestionare a codului sursă Git 2.46. 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 fuziune a ramurilor. Pentru a asigura integritatea istoriei și rezistența la modificări retroactive, se utilizează un hashing implicit al întregii istorii anterioare în fiecare commit, iar semnăturile digitale ale dezvoltatorilor pot fi utilizate pentru a certifica anumite etichete și commit-uri. Codul Git este distribuit sub licența GPLv2+.

Comparativ cu versiunea anterioară, noua versiune a primit 746 de modificări, pregătite cu participarea a 96 de dezvoltatori, dintre care 31 participă pentru prima dată la dezvoltare. Inovațiile principale sunt:

  • A fost adăugată suport experimental pentru un nou tip de bitmap-uri – "pseudo-merge reachability bitmap", în care, spre deosebire de structura "reachability bitmap", datele despre seturile de obiecte relevante pentru commit-uri sunt stocate nu în legătură cu fiecare commit în parte, ci în legătură cu mai multe commit-uri simultan. Această organizare permite utilizarea unui singur bitmap pentru determinarea obiectelor pentru commit-uri în ramuri diferite, ceea ce, în repositoare mari, permite evitarea creării unui număr mare de bitmap-uri separate și accelerează semnificativ parcurgerea obiectelor pentru a determina care obiecte trebuie trimise clientului atunci când se efectuează operații precum „git fetch”, „git rev-list” și „git clone”. Pentru a activa noul tip de bitmap-uri și a determina logica alegerii și utilizării acestora, a fost propus un set de configurații „bitmapPseudoMerge”: git config bitmapPseudoMerge.all.pattern ‘refs/(heads|tags)/’ git config bitmapPseudoMerge.all.threshold now git config bitmapPseudoMerge.all.stableThreshold never git repack -adb
  • A fost implementată o nouă interfață a liniei de comandă pentru comanda „git config”, în care, în locul opțiunilor disparate pentru vizualizarea, redenumirea și ștergerea setărilor și secțiunilor, cum ar fi „—get”, „—get-all”, „—unset” și „—remove-section”, a fost propus un set de subcomenzi separate. De exemplu, pentru a lista toate setările unui repository, acum se poate folosi comanda „git config list”, iar pentru a vizualiza conținutul unei anumite variabile — comanda „git config get ”. Pentru filtrarea suplimentară a rezultatelor, opțiunea „—regexp” permite specificarea unui filtru bazat pe expresii regulate.
  • Protocolul „credential helper”, folosit pentru transmiterea acreditivelor atunci când se accesează repository-uri cu acces restricționat, a fost extins cu suport pentru noi câmpuri „authtype” și „credential”, care permit crearea de handleri pentru sistemele de autentificare HTTP, ce nu se limitează la verificarea numelui de utilizator și a parolei, de exemplu, în cazul utilizării Bearer Token în OAuth 2.0. Înainte, pentru a lucra cu astfel de sisteme de autentificare, era necesar să se specifice datele confidențiale în clar în parametrul http.extraHeader. În plus, protocolul a fost îmbunătățit cu posibilitatea de salvare a stării fiecărui handler de acreditive pentru a susține metodele de autentificare în mai multe etape, utilizate în protocoale precum NTLM și Kerberos.
  • Continuarea dezvoltării backend-ului experimental „reftable” pentru stocarea eficientă în repository a legăturilor către ramuri și etichete. Acest backend folosește un stocare în bloc, având la bază proiectul JGit și fiind optimizat pentru a stoca un număr foarte mare de legături (formatele tradiționale de stocare a legăturilor duc la costuri considerabile în repository-urile ce conțin un număr mare de legături, din cauza plasării a foarte multor fișiere într-un singur director în cazul stocării legăturilor în directorul $GIT_DIR/refs sau a necesității de a rescrie un singur fișier mare la fiecare actualizare în cazul stocării legăturilor în fișierul $GIT_DIR/packed_refs). În noua versiune a fost adăugată comanda „git refs migrate —ref-format=reftable” pentru a migra repository-urile existente către backend-ul „reftable” (anterior, backend-ul era activat doar la inițializarea repository-ului).
  • Echipei git i s-a adăugat opțiunea „—no-advice”, care dezactivează toate mesajele de recomandare și sugestii, ceea ce poate fi util pentru a preveni umplerea jurnalului cu informații inutile în timpul apelurilor automate git.
  • A început procesul de traducere a unor verificări din setul de teste pentru a utiliza teste unitare, ceea ce va simplifica testarea componentelor de nivel inferior și va crește eficiența procesului de testare pe platforma Windows, pe care apar costuri mari atunci când se execută un număr mare de procese în timpul testelor implementate sub formă de scripturi shell.
  • Codului pentru analiza setărilor culorilor i s-a adăugat posibilitatea de a folosi reprezentarea „#RGB” pe lângă „#RRGGBB”.

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