Git 2.39 ya fue liberado y estas son sus novedades

Git

Git es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia,

Después de dos meses de desarrollo, se lanzó el sistema de control de código fuente distribuido Git 2.39, versión en la cual en comparación con la versión anterior, se aceptaron 483 cambios en la nueva versión, preparada con la participación de 86 desarrolladores, de los cuales 31 participaron en el desarrollo por primera vez.

Para quienes desconocen de Git, deben saber que este es uno de los sistemas de control de versiones más populares, fiables y de alto rendimiento que proporciona herramientas de desarrollo no lineal flexibles basadas en bifurcaciones y fusiones de bifurcaciones.

Para garantizar la integridad del historial y la resistencia a los cambios «backdating», se utiliza el hashing implícito de todo el historial anterior en cada confirmación, también es posible verificar las firmas digitales de los desarrolladores de etiquetas y confirmaciones individuales.

Principales novedades de Git 2.39

En esta nueva versión que se presenta, podremos encontrar que se agregó la opción «–group» al comando «git shortlog«, que está diseñado para mostrar resúmenes con estadísticas del historial de cambios, para agrupar arbitrariamente confirmaciones por campos sin limitarse al autor o autor.

Otra de las novedades que se destaca de la nueva versión, son las capacidades extendidas del mecanismo «cruft packs» para empaquetar objetos inalcanzables que no están referenciados en el repositorio (no referenciados por ramas o etiquetas).

El recolector de basura elimina los objetos inalcanzables, pero permanecen en el repositorio durante un cierto tiempo antes de eliminarlos para evitar condiciones de carrera. El mecanismo de «cruft packs» permite almacenar todos los objetos inalcanzables en un archivo de paquete y reflejar los datos sobre el tiempo de modificación de cada objeto en una tabla separada almacenada en un archivo separado con la extensión «.mtimes» para que lo hagan no se superponga con el tiempo total de modificaciones.

La cantidad de tiempo que los objetos inalcanzables permanecen en el repositorio antes de que se eliminen realmente está determinada por la opción «–prune=<fecha>». Dicho esto, si bien la demora antes de la eliminación es una forma razonablemente eficiente y práctica de evitar la corrupción del repositorio debido a una condición de carrera, no es 100 % confiable.

Para facilitar la recuperación de un repositorio roto, la nueva versión ofrece la posibilidad de guardar objetos faltantes al agregar la opción «–expire-to» al comando «git repack«, lo que le permite especificar un archivo para crear una copia externa de todos los objetos eliminados. Por ejemplo, para guardar objetos inalcanzables en el archivo backup.git que no han cambiado en los últimos 5 minutos.

Ademas de ello, tambien podremos encontrar en Git 2.39 es el aumentó (hasta un 70 %) la velocidad de la operación «git grep –cached» al buscar en áreas que usan clonación parcial (sparse-checkout) y para las que hay índices parciales (sparse index). Anteriormente, al especificar la opción «–cached«, primero se buscaba en el índice regular y luego en los parciales, lo que generaba retrasos notables al buscar en repositorios grandes.

La ejecución más rápida en el servidor de verificar la conectividad de nuevos objetos antes de que se coloquen en el repositorio al realizar la operación «git push». Debido a la transición a tener en cuenta al verificar solo los enlaces declarados, en un repositorio de prueba con 7 millones de enlaces, de los cuales solo el 3% están cubiertos por la operación push, las optimizaciones permitieron reducir el tiempo de verificación en 4,5 veces.

Para protegerse contra posibles desbordamientos de enteros en el código, el comando «git apply» limita el tamaño máximo de los parches que se pueden procesar. Si el tamaño del parche supera 1 GB, ahora se mostrará un error. Ademas, para protegerse contra posibles vulnerabilidades, se han realizado cambios para limpiar la información innecesaria de los encabezados establecidos al usar el módulo h2h3 con la opción GIT_TRACE_CURL=1 o GIT_CURL_VERBOSE=1 junto con HTTP/2.

De los demás cambios que se destacan:

  • Al realizar una operación de verificación en una rama que es un enlace simbólico a otra rama, el comando «gitsimbolic-ref HEAD» ahora imprime el nombre de la rama de destino en lugar del nombre del enlace simbólico.
  • Se agregó soporte para el argumento @{-1} a la opción «–edit-description» («git branch –edit-description @{-1}«) para editar la descripción de una rama anterior.
  • Se agregó el comando «git merge-tree –stdin» que le permite pasar una lista de opciones a través de la entrada estándar.
  • La salida del registro corto se puede agregar utilizando especificadores de formato y la opción «–group» simplifica enormemente la creación de informes complejos y elimina los comandos de clasificación adicionales.
  • En los sistemas de archivos de red, el controlador fsmonitor, que supervisa los cambios en el sistema de archivos, está deshabilitado de forma predeterminada.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.