Lanzamiento del sistema de control de versiones Git 2.32

Después de tres meses de desarrollo, se ha publicado la versión 2.32 del sistema distribuido de control de versiones Git. Git es uno de los sistemas de control de versiones más populares, confiables y de alto rendimiento, que ofrece herramientas flexibles para el desarrollo no lineal, basadas en bifurcaciones y fusiones de ramas. Para garantizar la integridad del historial y la resistencia a modificaciones "retroactivas", se utiliza un hash implícito de todo el historial anterior en cada commit, y también es posible autenticar digitalmente las firmas de los desarrolladores para etiquetas y commits individuales.

En comparación con la versión anterior, se han incorporado 617 cambios en esta nueva versión, realizados con la participación de 100 desarrolladores, de los cuales 35 participaron por primera vez en el desarrollo. Las principales novedades son:

  • Se ha añadido la opción "--trailer [=]" al comando "git commit", que permite simplificar la conexión de información estructurada propia (trailer) en formato clave/valor al commit, la cual se puede procesar después con el comando "interpret-trailers".
  • En lugar del mecanismo GIT_CONFIG_NOSYSTEM, que se utiliza para evitar la lectura del archivo de configuración global del sistema, se propone utilizar el mecanismo GIT_CONFIG_SYSTEM, que permite especificar explícitamente de qué archivo se deben cargar las configuraciones del sistema, así como el parámetro GIT_CONFIG_GLOBAL para redefinir configuraciones específicas de usuarios en $HOME/.gitconfig. Asignar un valor vacío a la variable GIT_CONFIG_SYSTEM cambia el comportamiento a un equivalente de GIT_CONFIG_NOSYSTEM.
  • Al utilizar la segunda versión del protocolo de comunicación de Git, se ha implementado la detección de un ancestro común en el lado del receptor al realizar un "git push", lo que ha permitido incrementar la eficiencia de "git push" al nivel de "git fetch" y excluir la descarga de objetos innecesarios.
  • Se ha añadido una interfaz IPC simple que permite crear servicios, como fsmonitor.
  • Se ha detenido el procesamiento de archivos " .gitattributes ", " .gitignore ", y " .mailmap ", si son enlaces simbólicos.
  • Para el transporte HTTP, se ha añadido soporte para el almacenamiento en caché de la contraseña que se usó con éxito para desbloquear el certificado.
  • En el comando "git stash show" se ha implementado la posibilidad de mostrar la parte no rastreada del almacén de archivos eliminados temporalmente.
  • Se ha propuesto una estrategia más avanzada para volver a empaquetar el repositorio con el equipo «git repack», lo que permite reducir el consumo de recursos durante el reempaquetado.
  • En el comando «git commit» se ha implementado una versión ampliada de la opción «—fixup» (crear un compromiso para «rebase —autosquash») — «—fixup=(reword|amend):», que ofrece la opción de modificar solo el mensaje en el registro o tanto el mensaje como el contenido.
  • En el comando «git send-email» se ha considerado la configuración de la ruta de los hooks core.hooksPath.
  • En «git format-patch -v» se permite el uso de contadores que no son enteros.
  • En «git clone» se ha añadido la opción «—reject-shallow», que impide la clonación de repositorios en modo superficial (sin historial completo de cambios).
  • En el programa «gitweb» se ha añadido un modo de ocultar correos electrónicos, reemplazando las cadenas que parecen correos electrónicos en la salida.
  • Se ha cambiado la lógica de procesamiento del comando «git apply —3way», que ahora intenta primero aplicar el algoritmo de fusión de tres vías y solo retrocede a la aplicación normal del parche en caso de fallo o conflicto (anteriormente era al revés).
  • En el comando «git apply» se permite especificar simultáneamente las opciones «—3way» y «—cached».
  • Se han añadido plantillas para el lenguaje «Scheme» en Userdiff.
  • En el comando «git log» se ha añadido la opción «—diff-merges=» y la configuración log.diffMerges para seleccionar el modo por defecto.
  • En los comandos «git add» y «git rm» se ha añadido una protección adicional contra la modificación de datos en rutas que se encuentran fuera del ámbito de la operación de clonación parcial (sparse checkout).
  • En el comando «git rev-list» se ha añadido la opción «—filter=object:type=» para excluir ciertos tipos de objetos del archivo pack generado por el comando pack-objects.
  • En «git pack-objects» se ha prohibido especificar valores negativos en opciones que aceptan valores numéricos, como «—window» y «—depth».

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster