Lanzamiento del sistema de control de versiones Git 2.50

Se ha publicado la versión 2.50 del sistema distribuido de control de versiones Git. Git se caracteriza por su alto rendimiento y ofrece herramientas de desarrollo no lineal basadas en ramificación y fusión de ramas. Para garantizar la integridad del historial y la resistencia a cambios retroactivos, se utiliza un hashing implícito de todo el historial anterior en cada commit, así como la verificación mediante firmas digitales de los desarrolladores de etiquetas y commits individuales. El código de Git se distribuye bajo la licencia GPLv2+.

En comparación con la versión anterior, en esta nueva versión se han aceptado 621 cambios, preparados con la participación de 98 desarrolladores, de los cuales 35 participan por primera vez en el desarrollo. Principales novedades:

  • Se ha ampliado la capacidad de dividir en varios archivos pack la base de objetos inalcanzables («cruft packs»), a los cuales no hay referencias en el repositorio (no están referenciados por ramas o etiquetas). El uso de varios archivos pack pequeños en lugar de uno grande permite reducir significativamente las operaciones de entrada/salida al reempaquetar repositorios con un gran número de objetos inalcanzables, ya que no es necesario reescribir todos los datos para cada operación de reempaquetado.

    En la nueva versión se ha propuesto la opción «—combine-cruft-below-size», que permite organizar la combinación de archivos pack existentes que no superen un valor determinado. A diferencia de la opción anteriormente disponible «—max-cruft-size», la nueva opción «—combine-cruft-below-size» no limita el tamaño máximo del archivo pack resultante, lo que permite combinar de manera más efectiva los archivos pack en repositorios con un gran número de objetos inalcanzables, distribuidos en varios archivos pack.

  • Se ha añadido soporte experimental para la actualización incremental de índices de múltiples paquetes MIDX (multi-pack index), donde cada capa del índice MIDX con información sobre la disponibilidad de objetos se coloca en un archivo bitmap separado. En repositorios muy grandes, la forma implementada de índices permite agregar de manera rápida y eficiente nuevos bitmaps de disponibilidad de objetos a medida que llegan los commits.
  • Se ha eliminado el antiguo motor de ejecución de operaciones de fusión «recursive» de la base de código, que ha sido reemplazado por el motor completamente renovado «ORT» (Ostensibly Recursive’s Twin), que es más potente, funcional y fácil de mantener. ORT permite verificar la posibilidad de fusionar dos objetos sin crear nuevos objetos en el repositorio (con el antiguo motor se requería ejecutar el comando «git merge-tree —write-tree», que escribía nuevos objetos en el repositorio). En Git 2.50, en el comando merge-tree se ha implementado la opción «—quiet», que permite comprobar la posibilidad de fusión en base al código de retorno sin escribir datos en el repositorio.
  • En «git cat-file —batch» y comandos similares se ha añadido la opción «—filter», que permite omitir algunos objetos al realizar la operación. git cat-file —batch-check='%(objectname)' —filter='object:type=tree'
  • En el comando «git maintenance» se han implementado tres nuevas acciones: worktree-prune, rerere-gc y reflog-expire. La acción worktree-prune está destinada a eliminar árboles de trabajo (worktrees) obsoletos o dañados en el repositorio. La acción rerere-gc elimina registros antiguos que quedan tras resolver conflictos de fusión. La acción reflog-expire elimina objetos obsoletos y no accesibles del reflog.
  • Se ha añadido el comando «git reflog drop», que elimina todos los datos del reflog para la rama especificada.
  • Se ha optimizado el manejo y uso de referencias, por ejemplo, se ha implementado un caché de prefijos de referencia, se han eliminado comprobaciones innecesarias al ejecutar el comando «git update-ref», y se ha aumentado la eficiencia en la búsqueda de iteradores de referencia existentes.
  • Se han añadido configuraciones KeepAlive para la biblioteca cURL: http.keepAliveIdle, http.keepAliveInterval y http.keepAliveCount.
  • En el comando «git rev-list» se ha implementado la opción de salida en un formato adecuado para el análisis de máquina, donde cada campo está separado por el carácter NUL.
  • El lenguaje Perl se ha excluido de las dependencias necesarias para las utilidades de documentación y la ejecución del conjunto de pruebas («make test»). Muchos de los one-liners de Perl en las pruebas han sido reemplazados por funciones de shell o reescritos en lenguaje C.
  • Se ha añadido un procesador userdiff para el formato de archivos de configuración «.ini».
  • En el comando send-email se ha mejorado el soporte para el servidor SMTP de Outlook.

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