Noticia Git 2.51 llega con mejoras clave en rendimiento y nuevas funciones

git 2.51


Tras dos meses de intenso trabajo, la comunidad de desarrollo de Git presenta la versión Git 2.51, una actualización que reúne 506 cambios, en los que participaron 91 desarrolladores, de los cuales 21 contribuyeron por primera vez.

Este lanzamiento introduce innovaciones pensadas para mejorar el rendimiento y simplificar la administración de repositorios, incluidas las optimizaciones de rendimiento para git-push y git-fetch, asi como también diversos cambios que encaminan hacia la nueva rama 3.x.

Principales novedades de Git 2.51​


Uno de los puntos más destacados de Git 2.51 es la optimización de los comandos git push y git fetch en repositorios con un gran número de referencias. La clave de esta mejora está en la actualización por lotes, que procesa múltiples enlaces en una sola transacción en lugar de hacerlo de forma individual.

Gracias a esta optimización, el backend reftable ahora supera en rendimiento al tradicional backend files. En pruebas realizadas con repositorios que incluyen hasta 10 000 referencias, el rendimiento de git fetch se multiplicó por 22 en reftable y por 1.25 en files, mientras que en git push las mejoras fueron de 18 y 1.21 veces respectivamente.

Otra innovación importante es la introducción de los llamados paquetes cruft, diseñados para almacenar objetos inaccesibles que no están vinculados a ramas o etiquetas. Estos objetos, que antes quedaban dispersos, ahora pueden gestionarse en empaquetados separados, lo que facilita su control y reduce el tamaño de los índices multipaquete (MIDX).

Con la nueva configuración repack.MIDXMustContainCruft, Git evita incluir estos objetos en los índices principales. En pruebas realizadas en GitHub, esta configuración permitió reducir el tamaño de los índices en un 38 %, acelerar la escritura en un 35 % y mejorar la lectura en un 5 %.

Nuevo enfoque para el empaquetado de objetos​


El comando git pack-objects incorpora la opción –path-walk, que introduce un método innovador para reorganizar archivos de empaquetado. En lugar de procesar los objetos en función de sus hashes, Git ahora puede recorrerlos según su ruta de archivo, empaquetando de manera conjunta aquellos que comparten la misma ubicación. Este enfoque elimina la necesidad de ordenar previamente los objetos y genera archivos de empaquetado más pequeños y eficientes.

Con esta versión también se ha estandarizado un nuevo formato para intercambiar estados del árbol de trabajo e índices creados con git stash. Ahora es posible exportar e importar stashes como si fueran ramas o etiquetas, lo que facilita trasladar estados de un sistema a otro.

Por ejemplo:

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

Mejoras en comandos clásicos​


Varios comandos de Git han recibido actualizaciones relevantes:

  • git cat-file ahora informa sobre objetos faltantes y submódulos, mostrando identificadores en lugar de simplemente marcar “missing”.
  • git log se beneficia de las optimizaciones de los filtros Bloom, acelerando búsquedas con múltiples rutas de archivos.
  • Los comandos git switch y git restore, considerados experimentales desde 2019, se estabilizan definitivamente como alternativas modernas a git checkout.
  • El comando git whatchanged, equivalente a git log –raw, queda obsoleto y será eliminado en Git 3.0.
  • git for-each-ref recibe la opción –start-after, que junto a –count permite paginar la salida.
  • git merge y git pull ahora incluyen la opción –compact-summary, que ofrece un formato de resumen más conciso.

Compatibilidad con C99 y nuevas reglas de contribución​


Git continúa adaptando su código a las características del estándar C99. Aunque desde 2021 se exige un compilador compatible, los desarrolladores avanzan con cautela para mantener compatibilidad con compiladores que solo lo implementan parcialmente.

Además, se ha introducido un cambio significativo en la política de contribución: ahora los parches pueden enviarse bajo un seudónimo, una decisión alineada con las reglas del kernel de Linux y pensada para ofrecer mayor flexibilidad a los colaboradores.

Mirando hacia Git 3.0​


El equipo de desarrollo también ha actualizado la hoja de ruta hacia Git 3.0, donde destacan dos cambios clave: el uso predeterminado de SHA-256 como identificador de objetos y la adopción del formato reftable para el almacenamiento de referencias de ramas y etiquetas. Estos avances apuntan a mejorar la seguridad y la eficiencia en repositorios cada vez más grandes y complejos.

Fuente: https://lore.kernel.org

Continúar leyendo...