Lanzamiento de control de fuente Git 2.38

Se ha anunciado el lanzamiento del sistema de control de código fuente distribuido Git 2.38. 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, se utiliza el hash implícito de todo el historial anterior en cada confirmación, y 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ó 699 cambios, elaborados con la participación de 92 desarrolladores, de los cuales 24 participaron en el desarrollo por primera vez. Principales innovaciones:

  • La estructura principal incluye la utilidad "escalar", desarrollada por Microsoft para gestionar grandes repositorios. La utilidad se escribió originalmente en C#, pero git incluye una versión modificada en C. La nueva utilidad se diferencia del comando git al habilitar de forma predeterminada funciones y configuraciones adicionales que afectan el rendimiento cuando se trabaja con repositorios muy grandes. Por ejemplo, cuando se usa escalar se aplica:
    • Clonación parcial para trabajar con una copia incompleta del repositorio.
    • Mecanismo incorporado para rastrear cambios en el sistema de archivos (FSMonitor), que le permite prescindir de buscar en todo el directorio de trabajo.
    • Índices que cubren objetos en diferentes archivos de paquete (paquete múltiple).
    • Archivos de gráfico de confirmación con un índice de gráfico de confirmación que se utilizan para optimizar el acceso a la información de confirmación.
    • Trabajo periódico en segundo plano para mantener la estructura óptima del repositorio en segundo plano, sin bloquear la sesión interactiva (el trabajo se realiza una vez por hora para descargar proactivamente objetos nuevos del repositorio remoto y actualizar el archivo con el gráfico de confirmación y el proceso de empaquetado). el repositorio se inicia todas las noches).
    • Modo "sparseCheckoutCone", que limita los patrones permitidos durante la clonación parcial.
  • Se agregó una opción --update-refs al comando "git rebase" para actualizar las ramas dependientes que se superponen con las ramas que se están moviendo, en lugar de tener que verificar manualmente cada rama dependiente para cambiar a la confirmación requerida.
  • Hizo que el comando "git rm" fuera compatible con índices parciales.
  • Se mejoró el comportamiento del comando "git mv AB" al mover un archivo desde un espacio de trabajo con índices parciales en modo "cono" a un ámbito externo que no tiene este modo.
  • El formato del archivo de mapa de bits se ha optimizado para trabajar con repositorios grandes: se ha agregado una tabla de índice opcional con una lista de confirmaciones seleccionadas y sus compensaciones.
  • El comando “git merge-tree” implementa un nuevo modo en el que, en base a dos confirmaciones especificadas, se calcula un árbol con el resultado de la fusión, como si los historiales de estas confirmaciones estuvieran fusionados.
  • Se agregó la configuración "safe.barerepository" para controlar la capacidad de alojar repositorios básicos (repositorios que no contienen un árbol de trabajo) dentro de otros repositorios de git. Cuando se establece en "explícito", será posible trabajar con repositorios básicos ubicados solo en el directorio superior. Para poder colocar repositorios vacíos en subdirectorios, utilice el valor "todos".
  • El comando “git grep” ha agregado la opción “-m” (“—max-count”), que es similar a la opción del mismo nombre en GNU grep y le permite limitar la cantidad de coincidencias mostradas.
  • El comando "ls-files" implementa la opción "--format" para configurar los campos de salida (por ejemplo, puede habilitar la salida del nombre del objeto, modos, etc.).
  • En "git cat-file", al mostrar el contenido de los objetos, es posible tener en cuenta los enlaces autor-correo electrónico especificados en el archivo mailmap.

Fuente: opennet.ru

Añadir un comentario