Després de dos mesos d'intens treball, la comunitat de desenvolupament de Git presenta la versió Git 2.51, una actualització que reuneix 506 canvis, en què van participar 91 desenvolupadors, dels quals 21 van contribuir per primera vegada.
Aquest llançament introdueix innovacions pensades per millorar el rendiment i simplificar l'administració de repositoris, incloses les optimitzacions de rendiment per a git-push i git-fetch, així com diversos canvis que encaminen cap a la nova branca 3.x.
Principals novetats de Git 2.51
Un dels punts més destacats de Git 2.51 és la optimització de les comandes git push i git fetch en repositoris amb un gran nombre de referències. La clau d'aquesta millora és l'actualització per lots, que processa múltiples enllaços en una sola transacció en lloc de fer-ho de forma individual.
Gràcies a aquesta optimització, el backend reftable ara supera en rendiment el tradicional backend files. En proves realitzades amb repositoris que inclouen fins a 10 referències, el rendiment de git fetch es va multiplicar per 000 en reftable i per 22 en fils, mentre que en git push les millores van ser de 1.25 i 18 vegades respectivament.
Una altra innovació important és la iintroducció dels anomenats paquets cruft, dissenyats per emmagatzemar objectes inaccessibles que no estan vinculats a branques o etiquetes. Aquests objectes, que abans quedaven dispersos, ara es poden gestionar en empaquetats separats, cosa que en facilita el control i redueix la mida dels índexs multipaquet (MIDX).
Amb l' nova configuració repack.MIDXMustContainCruft, Git evita incloure aquests objectes als índexs principals. En proves realitzades a GitHub, aquesta configuració va permetre reduir la mida dels índexs en un 38%, accelerar l'escriptura en un 35% i millorar la lectura en un 5%.
Nou enfocament per empaquetar objectes
El ordre git pack-objects incorpora l'opció –path-walk, que introdueix un mètode innovador per reorganitzar fitxers d'empaquetatge. En lloc de processar els objectes en funció dels vostres hashes, el Git ara els pot recórrer segons la ruta de fitxer, empaquetant de manera conjunta aquells que comparteixen la mateixa ubicació. Aquest enfocament elimina la necessitat d'ordenar prèviament els objectes i genera fitxers d'empaquetatge més petits i eficients.
Amb aquesta versió també s'ha estandarditzat un nou format per intercanviar estats de l'arbre de treball i índexs creats amb git stash. Ara és possible exportar i importar stashes com si fossin branques o etiquetes, cosa que facilita traslladar estats d'un sistema a un altre.
Per exemple:
git stash export --to-ref refs/stashes/el meu-stash git push origin refs/stashes/el meu-stash git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/el meu-stash
Millores en ordres clàssiques
Varis ordres de Git han rebut actualitzacions rellevants:
- git cat-file ara informa sobre objectes faltants i submòduls, mostrant identificadors en comptes de marcar “missing”.
- git log es beneficia de les optimitzacions dels filtres Bloom, accelerant cerques amb múltiples rutes de fitxers.
- Les ordres git switch i git restore, considerades experimentals des del 2019, s'estabilitzen definitivament com a alternatives modernes a git checkout.
- La comanda git whatchanged, equivalent a git log –raw, queda obsoleta i serà eliminada a Git 3.0.
- git for-each-ref rep l'opció –start-after, que juntament amb –count permet paginar la sortida.
- git merge i git pull inclouen ara l'opció –compact-summary, que ofereix un format de resum més concís.
Compatibilitat amb C99 i noves regles de contribució
Git continua adaptant el codi a les característiques de l'estàndard C99. Tot i que des del 2021 s'exigeix un compilador compatible, els desenvolupadors avancen amb cautela per mantenir compatibilitat amb compiladors que només l'implementen parcialment.
A més, s'ha introduït un canvi significatiu a la política de contribució: ara els pegats es poden enviar sota un pseudònim, una decisió alineada amb les regles del nucli de Linux i pensada per oferir més flexibilitat als col·laboradors.
Mirant cap a Git 3.0
El equip de desenvolupament també ha actualitzat el full de ruta cap a Git 3.0, on destaquen dos canvis clau: l'ús predeterminat de SHA-256 com a identificador d'objectes i l'adopció del format reftable per a l'emmagatzematge de referències de branques i etiquetes. Aquests avenços apunten a millorar la seguretat i l'eficiència en repositoris cada cop més grans i complexos.
font: https://lore.kernel.org