Git 2.51 sosește cu îmbunătățiri cheie de performanță și funcții noi

git 2.51

După două luni de muncă intensă, comunitatea de dezvoltare a Git introduce Git versiunea 2.51, o actualizare care Reunește 506 modificări, la care au participat 91 de dezvoltatori, dintre care 21 au contribuit pentru prima dată.

Această versiune introduce îmbunătățiri menite să îmbunătățească performanța și să simplifice gestionarea repozitoriilor, inclusiv optimizări de performanță pentru git-push și git-fetch, precum și câteva modificări legate de noua ramură 3.x.

Git 2.51 Caracteristici noi cheie

Unul dintre punctele forte ale Git 2.51 este Optimizarea comenzilor git push și git fetch în depozite cu un număr mare de referințe. Cheia acestei îmbunătățiri constă în actualizarea în lot, care procesează mai multe linkuri într-o singură tranzacție, mai degrabă decât individual.

Datorită acestei optimizări, Backend-ul reftable depășește acum performanța backend-ului tradițional pentru fișiere.În testele cu repozitorii care conțin până la 10 de referințe, performanța funcției git fetch a crescut de 000x pentru reftable și de 22x pentru fișiere, în timp ce performanța funcției git push s-a îmbunătățit de 1.25x, respectiv 18x.

O altă inovație importantă este iIntroducerea așa-numitelor ambalaje cruft, concepute pentru a stoca obiecte inaccesibile care nu sunt legate de ramuri sau etichete. Aceste obiecte, care anterior erau împrăștiate, acum poate fi gestionat în ambalaje separates, ceea ce le face mai ușor de controlat și reduce dimensiunea indexurilor multi-pachet (MIDX).

Cu noua setare repack.MIDXMustContainCruft, Git evită includerea acestor obiecte în indexurile principaleÎn testele pe GitHub, această configurație a redus dimensiunea indexului cu 38%, a accelerat scrierile cu 35% și a îmbunătățit citirile cu 5%.

O nouă abordare a ambalării obiectelor

El Comanda git pack-objects încorporează opțiunea –path-walk, care introduce o metodă inovatoare pentru a reorganiza fișierele de ambalare. În loc să proceseze obiectele pe baza hash-urilor lor, Git poate acum să le itereze pe baza căii lor de fișier, împachetându-le pe cele care au aceeași locație. Această abordare elimină necesitatea pre-sortării obiectelor și are ca rezultat împachetarea fișierelor mai mici și mai eficientă.

Și cu această versiune Un nou format pentru schimbul de stări funcționale ale arborilor și indexurilor create cu Git Stash a fost standardizat.Acum este posibil să exportăm și să importăm fișiere stash la fel ca ramurile sau etichetele, facilitând mutarea stărilor de la un sistem la altul.

De exemplu:

git stash export --to-ref refs/stashes/mi-stash git push origin refs/stashes/mi-stash git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash

Îmbunătățiri ale comenzilor clasice

Câteva Comenzile Git au primit actualizări relevante:

  • Fișierul git cat-file raportează acum obiectele și submodulele lipsă, afișând identificatori în loc să marcheze doar „lipsă”.
  • Log-ul git beneficiază de optimizările filtrului Bloom, accelerând căutările cu căi multiple de fișiere.
  • Comenzile `git switch` și `git restore`, considerate experimentale încă din 2019, sunt în sfârșit stabilizate ca alternative moderne la `git checkout`.
  • Comanda git whatchanged, echivalentă cu git log –raw, este depreciată și va fi eliminată în Git 3.0.
  • `git for-each-ref` primește opțiunea –start-after, care împreună cu –count permite paginarea rezultatului.
  • „git merge” și „git pull” includ acum opțiunea –compact-summary, care oferă un format de rezumat mai concis.

Sprijin C99 și noi reguli de contribuție

Git continuă să își adapteze codul la caracteristicile standardului C99. Deși un compilator compatibil este necesar încă din 2021, dezvoltatorii acționează cu prudență pentru a menține compatibilitatea cu compilatoarele care îl implementează doar parțial.

În plus, a fost introdusă o modificare semnificativă în politica de contribuții: Patch-urile pot fi acum trimise sub un pseudonim, o decizie aliniată cu regulile kernelului Linux și concepută pentru a oferi o mai mare flexibilitate contribuitorilor.

Privind în perspectivă către Git 3.0

El Echipa de dezvoltare a actualizat și foaia de parcurs la Git 3.0., unde ies în evidență două modificări cheie: utilizarea implicită a SHA-256 ca identificator de obiect și adoptarea formatului reftable pentru stocarea referințelor la ramuri și etichete. Aceste îmbunătățiri vizează îmbunătățirea securității și eficienței în depozite din ce în ce mai mari și mai complexe.

Fuente: https://lore.kernel.org