Git 2.46 llega con mejoras, correcciones y nuevo tipo de mapas de bits
La nueva versión de Git 2.46 llega después de tres meses de desarrollo y en este nuevo lanzamiento se han incorporado varias mejoras y nuevas características significativas tales como el soporte experimental para un nuevo tipo de mapas de bits, mejoras en el backend experimental «reftable», nueva interfaz de línea de comando para el comando «git config», entre otras cosas más.
Esta nueva versión de Git 2.46 incluye las correcciones de errores de más de 96 colaboradores, 31 de ellos nuevos y como tal, la nueva versión contiene 746 cambios.
Principales novedades en Git 2.46
El soporte experimental para el «mapa de bits de accesibilidad de pseudofusión» es una de las novedades más importantes de este lanzamiento, y es que este nuevo tipo de mapa de bits se diferencia de la estructura tradicional de «mapa de bits de accesibilidad» al almacenar datos sobre conjuntos de objetos relacionados con confirmaciones no para cada confirmación individual, sino para varias confirmaciones a la vez.
Como tal, este mapa de bits de accesibilidad de pseudofusión permite utilizar un único mapa de bits para definir objetos en confirmaciones de diferentes ramas, lo que resulta en una mejora significativa en el rendimiento, especialmente en repositorios grandes. Esto acelera operaciones como git fetch, git rev-list y git clone, al reducir la necesidad de generar múltiples mapas de bits separados.
Git 2.46 también introduce varias mejoras importantes en su interfaz de línea de comando y en el manejo de credenciales y almacenamiento de datos. Se ha rediseñado la interfaz de línea de comando para el comando git config, reemplazando opciones dispares como –get, –get-all, –unset, y –remove-section con un conjunto de subcomandos más intuitivos. Por ejemplo, para mostrar todas las configuraciones del repositorio, ahora puede usar el comando «git config list«, y para ver el contenido de un parámetro específico, ahora puede usar el comando «git config get <nombre del parámetro>». Para filtrar aún más los resultados, puede utilizar la opción «–regexp» para especificar un filtro basado en una expresión regular.
Ademas de ello, en el protocolo «credential helper» se ha agregado el soporte para los nuevos campos «authtype» y «credential», lo que permite crear controladores para sistemas de autenticación HTTP que no se limitan a verificar el nombre de usuario y la contraseña, por ejemplo, cuando se utiliza Bearer Token en OAuth 2.0. Y es que anteriormente, para trabajar con dichos sistemas de autenticación, era necesario especificar datos confidenciales en texto claro en el parámetro http.extraHeader. Además, el protocolo agrega la capacidad de conservar el estado de cada controlador de credenciales para admitir métodos de autenticación multifactor utilizados en protocolos como NTLM y Kerberos.
Por otra parte, se ha mejorado el desarrollo del backend experimental «reftable» para el almacenamiento eficiente de enlaces a ramas y etiquetas en el repositorio. La nueva versión agrega el comando «git refs migrar –ref-format=reftable» para migrar repositorios existentes al backend «reftable» (anteriormente, el backend solo se habilitaba cuando se inicializaba el repositorio).
Tambien, en Git 2.46 se ha iniciado con el proceso para convertir algunas pruebas del conjunto de pruebas, al uso de pruebas unitarias. Esto tiene la finalidad de simplificar las pruebas de componentes de bajo nivel y aumentará la eficiencia del proceso de pruebas en la plataforma Windows, que genera grandes costos generales cuando se ejecuta en una gran plataforma un número de procesos durante la ejecución de pruebas implementadas en forma de scripts de shell.
De los demás cambios que se destacan de esta nueva versión:
- Se agregó la opción «–no-advice» al comando git, que deshabilita todos los mensajes con recomendaciones y sugerencias, lo que puede ser útil para evitar que el registro se obstruya con información innecesaria durante una llamada automática de git.
- Se agregó la capacidad de usar la representación «#RGB» además de la representación «#RRGGBB» en el código para analizar la configuración de color.
- Cuando «git merge» ve que el índice no se puede actualizar (por ejemplo, debido
a otro proceso que hace lo mismo en segundo plano) - Se introduce una macro CPP USE_THE_REPOSITORY_VARIABLE para ayudar a la transición del código base para que dependa menos de la disponibilidad de la instancia singleton the_repository.
- «git version –build-options» informa la información de la versión de
- OpenSSL y otras bibliotecas (si se usan) en la compilación.
- Se han solucionado las fugas de memoria en «git mv»
- Se actualizó la compatibilidad con la finalización de la línea de comandos para zsh (en contrib/)
para dejar de exponer el estado interno a la interacción del shell del usuario final
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.