Lanzamiento de control de fuente Git 2.35

Después de dos meses de desarrollo, se lanzó el sistema de control de código fuente distribuido Git 2.35. Git es uno de los sistemas de control de versiones más populares, confiables y de alto rendimiento, y proporciona herramientas de desarrollo no lineales flexibles basadas en ramificaciones y fusiones. Para garantizar la integridad del historial y la resistencia a cambios retroactivos, en cada confirmación se utiliza el hash implícito de todo el historial anterior; también es posible certificar etiquetas individuales y confirmaciones con firmas digitales de los desarrolladores.

En comparación con la versión anterior, la nueva versión incluyó 494 cambios, elaborados con la participación de 93 desarrolladores, de los cuales 35 participaron en el desarrollo por primera vez. Principales innovaciones:

  • Se han ampliado las posibilidades de utilizar claves SSH para firmar digitalmente objetos Git. Para limitar el período de validez de varias claves, se agregó soporte para las directivas OpenSSH "válido antes" y "válido después", con las que puede garantizar el correcto funcionamiento de las firmas después de que uno de los desarrolladores haya rotado la clave. Antes de esto, había un problema con la separación de las firmas mediante la clave antigua y la nueva: si elimina la clave anterior, será imposible verificar las firmas realizadas con ella, y si la deja, seguirá siendo posible cree nuevas firmas con la clave anterior, que ya ha sido reemplazada por otra clave. Usando valid-before y valid-after puede separar el alcance de las claves según el momento en que se creó la firma.
  • En la configuración merge.conflictStyle, que le permite seleccionar el modo para mostrar información sobre conflictos durante una combinación, apareció soporte para el modo "zdiff3", que mueve todas las líneas estándar especificadas al principio o al final del conflicto fuera del conflicto. área, lo que permite una presentación más compacta de la información.
  • Se agregó el modo "--staged" al comando "git stash", que le permite ocultar solo los cambios agregados al índice, por ejemplo, en una situación en la que necesita posponer temporalmente algunos de los cambios complejos para poder realizar primero añade lo que ya está listo y ocúpate del resto al cabo de un rato. El modo es similar al comando "git commit", escribiendo solo los cambios colocados en el índice, pero en lugar de crear una nueva confirmación en "git stash —staged", el resultado se almacena en el área temporal del stash. Una vez que los cambios sean necesarios, se pueden revertir con el comando "git stash pop".
  • Se ha agregado un nuevo especificador de formato al comando "git log", "-format=%(describe)", que le permite combinar la salida de "git log" con la salida del comando "git describe". Los parámetros para “git describe” se especifican directamente dentro del especificador (“—format=%(describe:match=,exclude=)”), que también puede incluir etiquetas abreviadas (“—format=%( describe: tags=)") y configura el número de caracteres hexadecimales para identificar objetos ("-format=%(describe:abbrev=)"). Por ejemplo, para enumerar las últimas 8 confirmaciones cuyas etiquetas no tienen una etiqueta candidata de lanzamiento y especificar identificadores de 8 caracteres, puede usar el comando: $ git log -8 —format='%(describe:exclude=*-rc *,abrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642-gb 56bd95 bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640- gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • La configuración user.signingKey ahora admite nuevos tipos de claves que no se limitan al tipo "ssh-" y especifican la ruta completa del archivo a la clave. Los tipos alternativos se especifican utilizando el prefijo "key::", por ejemplo "key::ecdsa-sha2-nistp256" para las claves ECDSA.
  • Se ha aumentado notablemente la velocidad de generación de una lista de cambios en el modo “—histograma”, así como cuando se usa la opción “—color-moved-ws”, que controla el resaltado de espacios en color diff.
  • El comando "git jump", utilizado para proporcionar a Vim información sobre el salto exacto a la posición deseada en un archivo al analizar conflictos de fusión, ver diferencias o realizar una operación de búsqueda, brinda la capacidad de limitar los conflictos de fusión cubiertos. Por ejemplo, para limitar las operaciones solo al directorio "foo", puede especificar "git jump merge - foo" y excluir del procesamiento el directorio "Documentación" - "git jump merge - ':^Documentation'"
  • Se ha trabajado para estandarizar el uso del tipo "size_t" en lugar de "unsigned long" para los valores que representan el tamaño de los objetos, lo que permitió utilizar filtros "limpio" y "difuminado" con archivos de más de 4 GB. en todas las plataformas, incluidas las plataformas con el modelo de datos LLP64, cuyo tipo "unsigned long" está limitado a 4 bytes.
  • La opción "-empty=(stop|drop|keep)" se ha agregado al comando "git am", que le permite seleccionar el comportamiento de los mensajes vacíos que no contienen parches al analizar parches del buzón. El valor "detener" finalizará toda la operación de parcheo, "soltar" omitirá un parche vacío y "mantener" creará una confirmación vacía.
  • Se agregó soporte para índices parciales (índice disperso) a los comandos "git reset", "git diff", "git seek", "git fetch", "git pull" y "git ls-files" para mejorar el rendimiento y ahorrar espacio en repositorios, en los que se realizan operaciones de clonación parcial (sparse-checkout).
  • El comando "git sparse-checkout init" ha quedado obsoleto y debe reemplazarse por "git sparse-checkout set".
  • Se agregó la implementación inicial de un nuevo backend "reftable" para almacenar referencias como ramas y etiquetas en el repositorio. El nuevo backend utiliza el almacenamiento en bloques utilizado por el proyecto JGit y está optimizado para almacenar una gran cantidad de referencias. El backend aún no está integrado con el sistema refs y no está listo para su uso práctico.
  • La paleta de colores del comando "git grep" se ha ajustado para que coincida con la utilidad GNU grep.

Fuente: opennet.ru

Añadir un comentario