Lanzamiento del sistema de control de código fuente distribuido Git 2.24

Disponible lanzamiento del sistema de control de código fuente distribuido Git 2.24.0. Git es uno de los sistemas de control de versiones más populares, fiables y de alto rendimiento que proporciona herramientas de desarrollo no lineal flexibles basadas en bifurcaciones y fusiones de bifurcaciones. Para garantizar la integridad del historial y la resistencia a los cambios retroactivos, se utiliza un hash implícito de todo el historial anterior en cada confirmación, también es posible verificar etiquetas individuales y confirmaciones con firmas digitales de los desarrolladores.

En comparación con la versión anterior, la nueva versión incluyó 544 cambios, elaborados con la participación de 78 desarrolladores, de los cuales 21 participaron en el desarrollo por primera vez. El principal innovaciones:

  • Se agregó soporte para macros de configuración, a través de las cuales puede cambiar rápidamente entre diferentes conjuntos de configuraciones sin entrar en detalles sobre las opciones específicas asociadas con ellas. Con la ayuda de macros, no es necesario recordar qué configuraciones deben cambiarse para activar tal o cual funcionalidad. Por ejemplo, si un repositorio grande es lento, es posible que desee cambiar a un nuevo motor de indexación, habilitar la compresión de prefijos de ruta y habilitar el caché de archivos sin seguimiento configurando index.version en 4 y habilitando core.untrackedCache. Las macros le permiten no perder el tiempo buscando la solución adecuada en la documentación, sino activar inmediatamente configuraciones con optimizaciones para repositorios con una gran cantidad de archivos:

    característica de configuración de git.manyFiles verdadero

  • De forma predeterminada, está habilitado el almacenamiento de objetos en forma de gráfico de confirmación (gráfico de confirmación), en el que no se utiliza una lista lineal de hashes de objetos con enlaces a otros objetos, sino una estructura en forma de gráfico para la indexación. . Si anteriormente, para determinar las versiones que contienen una determinada solución, era necesario cargar cada objeto del disco para buscar enlaces, luego, cuando se almacena en forma de gráfico, puede determinar inmediatamente todos los enlaces necesarios. El cambio al almacenamiento en forma de gráfico de confirmación en el kernel de Linux y los repositorios de Git nos permitió lograr un aumento de casi el doble en el rendimiento de las operaciones con sucursales. Para habilitar el nuevo método de almacenamiento después de actualizar a Git 2.24, debe ejecutar el comando "git gc".

    Entre los cambios asociados con commit-graph, también notamos que se ha incorporado la implementación del indicador de progreso de la operación en los comandos relacionados con commit-graph (“git commit-graph write”, “git commit-graph verificar”, etc.). a una forma común con otros comandos...). El indicador de progreso ahora solo se muestra para el terminal de forma predeterminada (use la opción "-[no-]progreso" para cambiar el comportamiento). Además, se ha agregado un nuevo parámetro de configuración fetch.writeCommitGraph, que permite la actualización automática del archivo con el gráfico de confirmación durante las operaciones "git fetch" (todas las confirmaciones recuperadas de repositorios externos irán inmediatamente al gráfico de confirmación sin necesidad de ejecute auto-gc por separado);

  • Se agregó un comando para sobrescribir el historial de cambios: "repositorio de filtro de git", que es una alternativa más sencilla al comando "rama de filtro de git» para realizar operaciones sobre el historial de cambios en el repositorio (por ejemplo, eliminar un archivo del repositorio o recuperar el historial de cambios en un directorio específico). Para mejorar la eficiencia, en lugar de un análisis ordenado de confirmación por confirmación, git filter-repo realiza operaciones en la representación del historial en forma de un flujo continuo.

    El filtrado del historial se realiza mediante la opción “-path-{glob,regex}”, que permite utilizar tanto máscaras simples como expresiones regulares. También hay opciones para realizar una búsqueda y reemplazar o limpiar objetos binarios que sean mayores que un tamaño especificado. Cada confirmación reescrita se proporciona con un nuevo identificador hash SHA-1 y todas las referencias a la confirmación reemplazada se actualizan de acuerdo con el nuevo identificador.

    Para mostrar un resumen de estadísticas sobre el repositorio (número de objetos por tipo, archivos y directorios más grandes, qué extensiones requieren más espacio en disco, etc.), se proporciona la opción "-analizar". Para ampliar la funcionalidad, es posible conectar controladores de devolución de llamada arbitrarios en Python, a través de los cuales puede crear nuevos subcomandos y procesar varios eventos (por ejemplo, nuevos tipos de archivos);

  • Se agregó la opción "--end-of-options" para separar las opciones de los nombres de los enlaces, que pueden comenzar con un carácter "-" y tratarse como opciones ("git log --end-of-options -super-dangerous-option" ). Si en la vida cotidiana estos nombres se pueden escapar como "git log 'refs/heads/—super-dangerous-option'", entonces los scripts podrían tener problemas para definir el espacio de nombres. El delimitador generalmente aceptado " - " no es aplicable en este caso, ya que ya se usa para separar nombres de enlaces de archivos (por ejemplo, “git log —end-of-options —super-dangerous-option ^master — path/to /archivo");
  • Se agregaron las opciones "--strategy" y "--strategy-option" a "git rebase --rebase-merges" para seleccionar estrategias de fusion;
  • Se agregó un nuevo controlador ".git/hooks/pre-merge-commit" que se llama después de que se completa una fusión pero antes de que se escriba la confirmación resultante;
  • Se ha agregado al motor de finalización de comandos soporte para completar variables de configuración en relación con la configuración de comandos específicos.
    Por ejemplo, si necesita escribir "git -c core.autocrlf=false add path/to/my/file" pero no recuerda el nombre exacto de la variable "core.autocrlf", puede presionar Tab y obtener un pista.

Además, los desarrolladores de Git adicional código de conducta para un participante del proyecto, que define los principios básicos para la resolución de situaciones de conflicto. El documento se basa en las recomendaciones "Pacto Colaborador", utilizado en muchos proyectos de código abierto, incluido el kernel de Linux, Eclipse, Freedesktop, GitLab, Ruby y Kubernetes. El documento define la igualdad de oportunidades para todos los participantes, independientemente de su cosmovisión, edad, género, preferencias religiosas, nivel de educación, estatus social y nacionalidad. La comunidad agradece una forma amigable de comunicación, comprensión, empatía por los problemas de otros participantes, aceptar críticas constructivas y tomar las mejores decisiones para toda la comunidad. No se permiten trolling, comunicación ofensiva, intentos de humillación, acoso, violaciones de la privacidad, divulgación de información personal y otras acciones que puedan considerarse inapropiadas para la comunicación profesional.

Fuente: opennet.ru

Añadir un comentario