Después de tres meses de desarrollo, se ha publicado la versión 2.40 del sistema de gestión de código fuente distribuido Git. Git es uno de los sistemas de control de versiones más populares, confiables y de alto rendimiento, que proporciona herramientas flexibles para el desarrollo no lineal, basado en bifurcaciones y fusiones de ramas. Para garantizar la integridad del historial y la resistencia a cambios 'retroactivos', se utiliza un hashing implícito de toda la historia previa en cada commit, y también es posible garantizar con firmas digitales de los desarrolladores etiquetas y commits individuales.
En comparación con la versión anterior, se han incorporado 472 cambios en esta nueva versión, preparados con la participación de 88 desarrolladores, de los cuales 30 participaron por primera vez en el desarrollo. Las principales novedades son:
- Se ha añadido soporte para el editor Emacs en el script git-jump, además del editor Vim que ya era compatible. Git-jump se utiliza para pasar información sobre posiciones en un archivo al editor de texto para una rápida navegación y edición de código en un lugar específico. Por ejemplo, git-jump se puede usar para alternar entre líneas en el editor que resultan del análisis de conflictos de fusión, evaluar diferencias y realizar búsquedas (se puede ejecutar 'git jump grep foo' y luego cambiar rápidamente entre las posiciones donde aparece la máscara 'foo').
- En 'git cat-file' se ha implementado el soporte para usar las opciones '-s' y '--batch-check' junto con '--use-mailmap' para determinar correctamente el tamaño del objeto, teniendo en cuenta la sustitución del identificador basada en los enlaces de correo electrónico especificados en el archivo mailmap (anteriormente, la opción '--use-mailmap' solo afectaba la salida del contenido, pero no tenía en cuenta que los pares antiguos y sustituidos nombre/email pueden tener tamaños diferentes).
- Se ha agregado la opción '--source' al comando 'git check-attr' para seleccionar el árbol que contiene el archivo '.gitattributes' necesario, que se utilizará para determinar los atributos actuales en situaciones donde hay varios archivos '.gitattributes' en el repositorio.
- La implementación del comando 'git bisect' ha sido reescrita en C y se ha integrado en el archivo ejecutable principal de git (anteriormente, el comando se había implementado como un script de Shell).
- Se ha eliminado la antigua implementación del comando «git add —interactive», escrita en Shell (en git 2.26 se propuso una versión integrada en C, pero la antigua implementación en Shell seguía estando disponible y era controlada por la configuración add.interactive.useBuiltin).
- Se ha añadido la opción ‘—merge-base’ al comando «git merge-tree».
- Se ha añadido la opción «—abbrev=» al comando «git range-diff».
- Se ha añadido la posibilidad de redefinir el editor de listas para el modo interactivo del comando rebase mediante la configuración de la variable GIT_SEQUENCE_EDITOR a través del comando «git var», similar a «git var GIT_EDITOR».
- Se ha añadido soporte para contraseñas con tiempo limitado en el subsistema de gestión de cuentas.
- En los scripts de autocompletado de Bash se ha implementado un modo que ignora las distinciones entre mayúsculas y minúsculas.
Fuente: opennet.ru
