Linux Adictos Pablinux  

Novedades de Git 2.52: comandos, rendimiento y seguridad

git 2.52

Git 2.52 ya está disponible como actualización estable de este popular sistema de control de versiones distribuido. La versión llega con funciones nuevas, ajustes de mantenimiento y mejoras de rendimiento fruto del trabajo de más de 94 personas colaboradoras, 33 de ellas por primera vez en el proyecto.

Entre los cambios más llamativos aparecen nuevos subcomandos para explorar repositorios, un flujo de mantenimiento más inteligente y avances de cara a la transición a SHA‑256. Todo ello se entrega con un tono continuista y sin estridencias, con enfoque práctico que gestionan repositorios de tamaño variado.

Nuevos comandos de git 2.52 para explorar repositorios

La novedad que más llama la atención es git last-modified, pensado para obtener de forma eficiente el commit más reciente que tocó cada ruta. En repositorios con muchas entradas, este enfoque evita recorridos repetidos del historial y puede ser varias veces más veloz que encadenar ls-tree + log, según pruebas internas, reduciendo tiempos de segundos a milisegundos en escenarios reales.

El motor de last-modified se gestó durante años en GitHub bajo el nombre blame-tree, alimentando su «blame» a nivel de árbol desde 2012. Posteriormente, ingenieros de GitLab pulieron el conjunto de parches para integrarlo en Git 2.52, aunque todavía quedan funciones por traer, como un formato en disco para cachear resultados de ejecuciones anteriores.

Llega también el experimental git repo, un paraguas para consultar características del repositorio. Con git repo info se puede saber si es bare o shallow, el formato de objetos y referencias, y con git repo structure se imprimen estadísticas de estructura (conteos de commits, árboles, blobs, ramas, etiquetas, etc.). Además, info incorpora la opción abreviada -z y es capaz de informar del formato de objetos usado.

Para quien trabaja a bajo nivel con referencias, git refs suma git refs list (alias de git for-each-ref) y git refs exists (similar a git show-ref --exists). No aportan capacidades inéditas, pero concentran operaciones frecuentes de referencias bajo un único comando.

Pequeño pero útil: ahora git cmd --help-all funciona también fuera de un repositorio, lo que facilita consultar ayuda global sin necesidad de inicializar nada.

Mantenimiento y rendimiento

Git 2.52 introduce una tarea geometric dentro de git maintenance que evita los «all-into-one repacks» siempre que sea posible y poda objetos inalcanzables con menos frecuencia. La tarea inspecciona los paquetes para formar una progresión geométrica por número de objetos y compactar sin podar cuando conviene; si la operación terminaría en un único pack, ejecuta un git gc completo para consolidar y podar.

En el apartado de velocidad, hay avances medibles: git describe emplea ahora una cola de prioridad y gana alrededor de un 30% de rendimiento; git remote rename optimiza el renombrado de referencias; git ls-files mantiene el índice disperso en más casos; git log -L evita ciertos diffs a nivel de árbol en merges, acelerando el análisis; y la biblioteca xdiff incorpora varias optimizaciones que mejoran diff y merge a nivel de archivo.

Seguridad y hoja de ruta hacia Git 3.0

Continúa la transición de SHA‑1 a SHA‑256. En 2.52 aparecen los primeros elementos de interoperabilidad entre algoritmos, con la meta de que repositorios con hash distintos puedan intercambiar cambios con normalidad. Aún es trabajo de base, pero marca el camino de la próxima gran versión.

Otro cambio previsto para Git 3.0 es que la rama por defecto pase a llamarse «main». Desde 2.52 se incluyen pistas y mensajes de ayuda para facilitar ese cambio, y quien quiera adelantarse puede compilar con la bandera WITH_BREAKING_CHANGES para probar comportamientos planificados.

También llega, de forma opcional, código en Rust protegido por WITH_RUST, que implementa la codificación/decodificación de enteros de ancho variable. En esta versión no es obligatorio y Git 2.52 funciona sin compilador de Rust, pero de cara a Git 3.0 se prevé exigirlo y ampliar las piezas reescritas.

Mejoras en flujos de trabajo y usabilidad

Se amplía el uso de los changed-path Bloom filters, un filtro probabilístico que acelera recorridos cuando se acotan por rutas. Ahora se aprovechan incluso cuando la pathspec contiene comodines parciales (por ejemplo, foo/bar/*/baz) y en escenarios con múltiples rutas de interés, beneficiando consultas como las de last-modified y varios comandos de historial.

git sparse-checkout añade la acción clean para resolver casos en los que, al cambiar la definición de áreas de interés, queden archivos fuera de la selección. Con un solo paso se limpia el árbol de trabajo de elementos no deseados.

Otras incorporaciones útiles: nueva variable commitGraph.changedPaths para activar por defecto --changed-paths en git commit-graph; opción stash.index para que git stash pop/apply se comporte como si se invocara con --index; git diff-tree recibe --max-depth; git fast-import ahora gestiona etiquetas firmadas; y git repo info aprende a informar del formato de objetos además del soporte de -z.

Disponibilidad de git 2.52

El código fuente de Git 2.52 se puede descargar desde el sitio oficial para compilarlo localmente. En los próximos días y semanas debería llegar a los repositorios de las principales distribuciones GNU/Linux en Europa (Debian, Ubuntu, Fedora, openSUSE, Arch, etc.) y a gestores como Homebrew, MacPorts o Chocolatey, con los habituales tiempos de empaquetado.

Con esta entrega, Git refuerza el día a día con comandos más rápidos y útiles, una rutina de mantenimiento más lista y los primeros ladrillos de la transición a SHA‑256 y a «main» como rama por defecto. Quien actualice podrá probar ya git last-modified, el nuevo git repo, la tarea geométrica de git maintenance y el resto de ajustes que, sin hacer ruido, suavizan la experiencia en repositorios pequeños y gigantes por igual.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.