Lanzamiento de control de fuente Git 2.36

Después de tres meses de desarrollo, se lanzó el sistema de control de código fuente distribuido Git 2.36. 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, en la nueva versión, preparada con la participación de 717 desarrolladores, se adoptaron 96 cambios, de los cuales 26 participaron en el desarrollo por primera vez. Principales innovaciones:

  • Los comandos "git log" y "git show" ahora tienen una opción "—remerge-diff" que le permite mostrar las diferencias entre el resultado general de la fusión y los datos reales reflejados en la confirmación después de procesar el comando "merge" , que le permite evaluar claramente los cambios realizados como resultado de la resolución de conflictos de fusión. El comando normal "git show" sangra las diferentes resoluciones de conflictos, lo que hace que los cambios sean difíciles de entender. Por ejemplo, en la captura de pantalla debajo de la línea "+/-" sin sangría se muestra la última resolución del conflicto asociado con el cambio de nombre de sha1 a oid en el comentario de la primera rama, y ​​"+/-" con sangría muestra la inicial resolución del conflicto causado por la aparición de un argumento adicional en la segunda rama de la función dwim_ref().
    Lanzamiento de control de fuente Git 2.36

    Cuando se utiliza la opción "--remerge-diff", las diferencias entre las resoluciones de conflictos no se separan para cada rama principal, pero se muestran las diferencias generales entre el archivo que tiene conflictos de fusión y el archivo que tiene los conflictos resueltos.

    Lanzamiento de control de fuente Git 2.36

  • Mayor flexibilidad en la configuración del comportamiento para vaciar las cachés del disco mediante una llamada a la función fsync(). El parámetro core.fsyncObjectFiles disponible anteriormente se ha dividido en dos variables de configuración core.fsync y core.fsyncMethod, lo que brinda la capacidad de aplicar fsync no solo a archivos de objetos (.git/objects), sino también a otras estructuras de git como enlaces ( .git /refs), volver a registrar y empaquetar archivos.

    Usando la variable core.fsync, puede especificar una lista de estructuras internas de Git para las cuales se llamará adicionalmente a fsync después de una operación de escritura. La variable core.fsyncMethod le permite seleccionar un método para vaciar el caché; por ejemplo, puede seleccionar fsync para usar la llamada al sistema del mismo nombre o especificar solo escritura para usar la reescritura del caché de página.

  • Para protegerse contra vulnerabilidades que manipulan la sustitución de directorios .git por parte de otros usuarios en secciones compartidas, se ha reforzado la verificación del propietario del repositorio. Ahora solo se permite ejecutar cualquier comando de git en sus propios directorios ".git". Si el directorio con el repositorio pertenece a otro usuario, se mostrará un error de forma predeterminada. Este comportamiento se puede desactivar mediante la configuración de directorio seguro.
  • El comando "git cat-file", destinado a generar el contenido fuente de los objetos Git, se ha complementado con la opción "--batch-command", que complementa las opciones "--batch" y "--batch-check" disponibles anteriormente. "Comandos con la capacidad de seleccionar de forma adaptativa el tipo de salida usando" contenidos <objeto>" para mostrar contenido o "info <objeto>" para mostrar información sobre el objeto. Además, se admite el comando "flush" para vaciar el búfer de salida.
  • Al comando “git ls-tree”, destinado a generar una lista del contenido de un árbol de objetos, se le ha agregado la opción “—oid-only” (“—object-only”), similar a “—name-only ”, mostrando solo identificadores de objetos para simplificar la llamada desde scripts. También está implementada la opción “--format”, que le permite definir su propio formato de salida combinando información sobre modo, tipo, nombre y tamaño.
  • El comando "git bisect run" implementa la detección de no configurar el indicador de archivo ejecutable para un script y, en este caso, mostrar errores con los códigos 126 o 127 (anteriormente, si el script no se podía ejecutar, todas las revisiones se marcaban como con problemas). .
  • Se agregó una opción --refetch al comando "git fetch" para recuperar todos los objetos sin informar a la otra parte sobre los contenidos que ya están en el sistema local. Este comportamiento puede resultar útil para recuperarse de errores cuando la integridad de los datos locales es incierta.
  • Los comandos "git update-index", "git checkout-index", "git read-tree" y "git clean" ahora admiten índices parciales (índice disperso) para mejorar el rendimiento y ahorrar espacio en los repositorios donde se realizan operaciones parciales. (pago escaso).
  • Se ha cambiado el comportamiento del comando “git clone —filter=… —recurse-submodules”, lo que ahora conduce a la clonación parcial de submódulos (anteriormente, al ejecutar dichos comandos, el filtro se aplicaba solo al contenido principal y los submódulos se clonado completamente sin tener en cuenta el filtro).
  • El comando "git bundle" ha agregado soporte para especificar filtros para colocar contenido de forma selectiva, similar a las operaciones de clonación parcial.
  • Se agregó la opción "--recurse-submodules" al comando "git branch" para atravesar submódulos de forma recursiva.
  • Userdiff ofrece un nuevo controlador para el lenguaje Kotlin.

Fuente: opennet.ru

Añadir un comentario