Lansarea sistemului de control al versiunilor Git 2.48

A fost lansată versiunea 2.48 a sistemului distribuit de gestionare a codului sursă Git. Git se distinge prin performanța sa ridicată și oferă instrumente pentru dezvoltarea neliniară, bazate pe ramificare și îmbinare de ramuri. Pentru a asigura integritatea istoricului și rezistența la modificări retroactive, se utilizează hashing-ul implicit al întregului istoric anterior în fiecare commit, precum și autentificarea prin semnături digitale ale dezvoltatorilor pentru tag-uri și commits. Codul Git este distribuit sub licența GPLv2+.

Comparativ cu versiunea anterioară, noua versiune a inclus 605 modificări, realizate cu contribuția a 93 de dezvoltatori, dintre care 35 participă pentru prima dată la dezvoltare. Principalele noutăți:

  • A fost implementată posibilitatea de a construi utilizând sistemul de construire Meson, pe lângă GNU Make și CMake. Pentru a construi Git, acum se poate folosi comanda „meson setup build && ninja -C build”. Se observă că Makefile-ul utilizat cu GNU Make a crescut până la 3887 de linii și nu este atât de simplu pe cât ne-am dori. Instrumentele Meson simplifică lucrul cu sistemul de construire, fiind prietenoase cu construcțiile încrucișate și fac construcția mai accesibilă pentru începători sau dezvoltatori fără experiență cu utilitarul Make. Nu se preconizează suspendarea suportului pentru Make și CMake în viitorul apropiat.
  • Au fost adăugate opțiuni de construire care permit utilizarea unor implementări alternative ale hashing-ului SHA-1 pentru calcularea sumelor de control, utilizate pentru verificarea integrității blocurilor de date în fișierele pack. Performanța calculului sumelor de control este foarte importantă, de exemplu, aproximativ 78% din timpul procesorului este folosit pentru a calcula aceste sume de control atunci când se clonează un repository care conține kernelul Linux. Implementarea folosită în mod implicit include verificări suplimentare pentru coliziuni și protecție împotriva atacurilor asupra SHA-1, cum ar fi SHAttered și Shambles. Această protecție, care consumă resurse suplimentare, are sens doar când se utilizează SHA-1 în scopuri criptografice și este inutilă pentru verificarea integrității datelor indexate.

    Pentru a construi Git cu o implementare mai rapidă a SHA-1, inapropiată pentru criptosisteme, a fost propusă o serie de opțiuni *_UNSAFE, cum ar fi „OPENSSL_SHA1_UNSAFE”. Pe GitHub, construcția cu SHA-1 simplificat a permis o creștere cu 10-13% a performanței operațiunilor de extragere și clonare a datelor.

  • A fost adăugată posibilitatea utilizării opțiunii „—remerge-diff” în comanda „range-diff”, care permite afișarea diferențelor dintre rezultatul general al fuzionării și datele reale reflectate în commit după procesarea comenzii „merge”. Când se utilizează opțiunea „—remerge-diff”, diferențele dintre rezolvările conflictelor nu sunt separate pentru fiecare ramură părinte, ci se afișează diferențele generale între fișierul cu conflicte de fuzionare și fișierul în care conflictele sunt rezolvate. În contextul comenzii „range-diff”, noua opțiune ar putea fi utilă pentru compararea seturilor de commituri după mutarea secvenței de commituri cu comanda „rebase” folosind opțiunea „—rebase-merges.”
  • A fost adăugată posibilitatea de a rula un set de teste Git cu activarea modului de detectare a scurgerilor de memorie. Deoarece git oferă utilitare care se încheie după finalizarea funcției apelate, scurgerile de memorie nu au fost considerate o problemă majoră până acum. Necesitatea de a elimina complet scurgerile de memorie a devenit relevantă după ce s-a început lucrul la externalizarea funcționalității interne într-o bibliotecă separată, care poate fi utilizată în procese lungi de rulare.
  • A început formarea unei liste a modurilor și capacităților învechite, suportul cărora este planificat să fie oprit în viitor. Se preconizează că eliminarea funcționalității învechite va avea loc în versiunea Git 3.0, care va include modificări ce vor afecta compatibilitatea inversă.
  • A fost continuată optimizarea funcționării comenzii „git for-each-ref”, care afișează lista referințelor din depozit. Optimizarea, care combină gestionarii pentru filtrarea referințelor și formatarea ieșirii, se aplică acum nu doar pentru ieșirea nesortată, ci și atunci când se specifică opțiunea „—sort”.
  • Implementarea backend-ului „reftable” a fost îmbunătățită cu un stocare pe blocuri pentru stocarea eficientă a referințelor la ramuri și etichete în repository. Reftable permite accelerarea semnificativă a căutării, citirii și scrierii în repository-uri cu un număr foarte mare de referințe. În noua versiune, s-a renunțat la apelarea unor API-uri auxiliare pentru a exclude biblioteca libgit din dependențele de construire. A fost implementată o gestionare adaptivă a erorilor returnate de funcțiile de alocare a memoriei (lipsa de memorie nu mai duce acum la o încheiere neașteptată a programului). Operațiile de creare a referințelor au fost accelerate și consumul de memorie a fost redus.
  • În implementarea clonării parțiale, problemele care duceau la bucle infinite și la coruperea repository-ului după executarea comenzii „git gc” au fost rezolvate.
  • Atunci când se execută comanda „git fetch ”, în cazul în care „refs/remotes//HEAD” nu există pe sistemul local și există o ramură pe cealaltă parte la care se face referire prin HEAD, „refs/remotes//HEAD” este acum redirecționat către această ramură. Pentru a gestiona sincronizarea lui „refs/remotes//HEAD” cu valoarea HEAD de pe cealaltă parte a conexiunii, a fost adăugată configurația remote..followRemoteHEAD.
  • A fost adăugată configurația „remote..serverOption”, similară cu opțiunea din linia de comandă „—serverOption=”.
  • În comanda „git rebase —rebase-merges”, s-a asigurat utilizarea numelui ramurilor ca etichete, acolo unde este posibil.
  • În comenzile ‘git notes add’ și ‘git notes append’ a fost adăugat flag-ul ‘-e’, care deschide nota într-un editor de text extern specificat prin variabila de mediu GIT_EDITOR.
  • Compatibilitatea cu GCC 15 și standardul C23 a fost îmbunătățită.
  • Suportul pentru versiunile vechi de libcURL și Perl a fost eliminat.

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