Git 2.54: Novedades clave para flujos de trabajo modernos

Introducción

Git 2.54 representa un paso intermedio en la evolución del sistema de control de versiones más utilizado en el desarrollo de software. Este ciclo, respaldado por una comunidad amplia, mantiene el foco en simplificar tareas diarias sin perder la potencia que caracteriza a Git.

Panorama general del lanzamiento

Git 2.54 llega como un puente hacia la futura rama 3.0. Entre sus novedades destacan un comando experimental para reescribir historial de forma más directa, la posibilidad de gestionar hooks desde la configuración y mejoras de rendimiento pensadas para repositorios grandes y proyectos corporativos.

Nuevo comando experimental git history

Una de las incorporaciones más destacadas es git history, una orden experimental que busca simplificar ciertas operaciones de reescritura sin activar un rebase interactivo completo.

Subcomando reword

Con git history reword , Git abre el editor configurado para cambiar el mensaje del commit sin alterar el árbol de trabajo. Al guardar, el commit se reescribe y las ramas descendientes se actualizan para apuntar a la nueva versión. Esta acción modifica solo el historial y es ideal para entornos de integración continua.

Subcomando split

El subcomando split permite dividir un commit en varias piezas. Git muestra los hunks y permite seleccionar cuáles deben convertirse en commits nuevos. El resultado es una nueva estructura de historial sin tocar el contenido del árbol de trabajo.

Limitaciones

git history no maneja historiales con fusiones, y la operación no procede si podría generar conflictos de merge. Está pensada para retoques puntuales y facilita la automatización en entornos donde se evita la complejidad de un rebase interactivo.

Hooks basados en configuración

Otro cambio relevante es la posibilidad de definir hooks desde los ficheros de configuración, lo que facilita compartir comprobaciones entre repositorios sin duplicar scripts. Es posible definir varios hooks para un mismo evento y gestionar su activación desde la configuración global, del sistema o del repositorio.

Definición por configuración

Se utilizan claves de configuración del tipo hook.nombre.command y hook.nombre.event para indicar el comando y el evento que dispara el hook. Esta aproximación permanece compatible con el pipeline clásico de hooks en .git/hooks.

Gestión y control

Con la nueva orden git hook list se puede inspeccionar qué hooks están activos y su origen. Si es necesario deshabilitar un hook heredado, basta con establecer hook.nombre.enabled = false.

Mantenimiento geométrico como estrategia por defecto

La estrategia geométrica para mantenimiento de repositorios pasa a ser la opción por defecto en git maintenance run. Este enfoque optimiza la gestión de packfiles para repositorios con gran historia, combinando paquetes de forma incremental y aplicando un garbage collection completo solo cuando resulta necesario.

Mejoras en comandos interactivos y herramientas experimentales

Git 2.54 continúa refinando la experiencia interactiva. Entre las mejoras destaca el modo avanzado de git add -p, con navegación mejorada y la opción –no-auto-advance para permanecer en el mismo archivo mientras se revisan hunks.

git replay

La orden experimental git replay madura, realizando actualizaciones de referencias de forma atómica y aportando un modo –revert para invertir cambios de un rango de commits. También admite reproducir historia hasta el commit raíz y descartar commits vacíos.

Nueva opción –trailer en git rebase

Con –trailer en git rebase se puede añadir de forma automática el mismo trailer a cada commit rebasado, simplificando tareas repetitivas de revisión como Reviewed-by sin necesidad de combinaciones complejas de comandos.

Transporte HTTP y firmas

En el ámbito de la red, Git 2.54 mejora la gestión de respuestas HTTP y el manejo de firmas GPG.

Respuestas HTTP 429 y reintentos

Ahora Git interpreta correctamente el código 429 Too Many Requests y puede reintentar, respetando Retry-After si está disponible o un límite configurado por http.retryAfter. Se añaden http.maxRetries y http.maxRetryTime para controlar el número y la duración de los reintentos.

Firmas GPG con claves caducadas

Si una clave GPG ya caducó, Git ajusta la visualización para considerar válidas aquellas firmas hechas correctamente antes de la caducidad, evitando alertas innecesarias.

Nuevas capacidades de inspección y personalización de historial

Las herramientas para inspeccionar el historial ganan flexibilidad. El comando git log -L se integra con el mecanismo estándar de diffs, y git blame ofrece una opción diff algorithm para elegir entre distintos algoritmos de diff.

git log -L

La opción -L queda alineada con el resto del diff y soporta búsquedas por contenido y formatos de diff avanzados, permitiendo filtrar cambios en rangos de líneas con mayor precisión.

git blame diff algorithm

Con la nueva opción –diff-algorithm, blame puede utilizar algoritmos como histogram, patience o minimal para atribuir líneas, reduciendo el ruido en historiales muy movidos.

Optimización de almacenamiento y bases de datos de objetos

Las mejoras internas se centran en la forma en que Git organiza los datos. Los índices multi-pack incrementales reciben soporte para la compactación de capas, y la base de datos de objetos se refactoriza hacia un backend enchufable para facilitar futuras extensiones.

MIDX y compactación

El desarrollo de MIDX facilita la escalabilidad de repositorios grandes, al combinar capas incrementales y sus bitmap de alcanzabilidad para mejorar búsquedas y operaciones como fetch y clone parcial.

Reestructuración de ODB

La base de datos de objetos se reimplementa con un backend modular, permitiendo la adopción de soluciones de almacenamiento alternativas en el futuro sin cambiar la API de alto nivel.

Mejoras en status, alias y backfill

También se incorporan mejoras menores pero útiles para el día a día.

git status con varias ramas remotas

La nueva configuración status.compareBranches permite comparar la rama actual con varias ramas remotas, lo que facilita flujos con forks y repos oficiales múltiples.

Alias con caracteres internacionales

Los alias ya pueden definirse con una mayor diversidad de caracteres, soportando nombres en distintos idiomas y alfabetos, con autocompletado mejorado en el shell.

git backfill en clones parciales

El comando experimental backfill añade soporte para limitar la recuperación a un rango de historia o a rutas específicas, lo que facilita trabajar con clones parciales grandes.

Conclusión

Git 2.54 combina mejoras visibles para el usuario con una base interna más modular y preparada para repositorios cada vez más grandes. Los cambios en historial, hooks y mantenimiento ofrecen herramientas útiles para equipos que trabajan en entornos corporativos o de código abierto, y la mejora del transporte y la seguridad refuerzan la fiabilidad en operaciones diarias.

from Linux Adictos https://ift.tt/FeC6PGZ
via IFTTT