Lanzamento do sistema de control de fonte distribuído Git 2.31

Xa está dispoñible o sistema de control de fontes distribuído Git 2.31. Git é un dos sistemas de control de versións máis populares, fiables e de alto rendemento, que ofrece ferramentas de desenvolvemento flexibles e non lineais baseadas en ramificación e fusión. Para garantir a integridade do historial e a resistencia aos cambios retroactivos, en cada commit utilízase o hash implícito de todo o historial anterior; tamén é posible certificar etiquetas e commits individuais con sinaturas dixitais dos desenvolvedores.

En comparación coa versión anterior, a nova versión incluíu 679 cambios, elaborados coa participación de 85 desenvolvedores, dos cales 23 participaron no desenvolvemento por primeira vez. Principais novidades:

  • Engadiuse o comando "git maintenance", que che permite realizar traballos periódicos en sistemas que non admiten cron. Por exemplo, usando un novo comando, pode organizar que o proceso de empaquetado do repositorio se execute periódicamente, de modo que non teña que esperar ata que o repositorio estea bloqueado cando o empaquetado se realiza automaticamente mentres se executan varios comandos. O comando "git maintenance" permítelle realizar optimizacións e operacións para manter a estrutura óptima do repositorio en segundo plano, sen bloquear a sesión interactiva: unha vez por hora, trabállase para descargar de forma proactiva obxectos novos desde o repositorio remoto e actualizar o ficheiro co gráfico de confirmación e o proceso de empaquetado do repositorio comeza todas as noites .
  • Engadido soporte para manter un índice inverso (revindex) no disco para ficheiros de paquete. Lembre que Git almacena todos os datos en forma de obxectos, que se atopan en ficheiros separados. Para aumentar a eficiencia de traballar co repositorio, os obxectos colócanse adicionalmente en ficheiros de paquete, nos que a información se presenta en forma de fluxo de obxectos que se seguen uns aos outros (utilízase un formato similar ao transferir obxectos con git fetch e git push). comandos). Para cada ficheiro de paquete, créase un ficheiro de índice (.idx), que lle permite determinar moi rapidamente a compensación no ficheiro de paquete no que se almacena o obxecto dado mediante o identificador de obxecto. Introducido en Git 2.31, o índice inverso (.rev) ten como obxectivo optimizar o proceso de determinación dun identificador de obxecto a partir da información sobre a colocación dun obxecto nun ficheiro de paquete.

    Anteriormente, esa conversión realizábase sobre a marcha mentres se analizaba o ficheiro paquete e gardábase só na memoria, o que non permitía reutilizar índices similares e obrigaba a xerar o índice cada vez. A operación de construír un índice redúcese a construír unha matriz de pares obxecto-posición e clasificalo por posición, o que pode levar moito tempo para os ficheiros de paquetes grandes.

    Por exemplo, unha operación para mostrar o contido de obxectos, que utiliza un índice directo, foi 62 veces máis rápida que unha operación para mostrar o tamaño dos obxectos, para os que non se indexaron os datos de posición a obxecto. Despois de usar o índice inverso, estas operacións comezaron a levar aproximadamente o mesmo tempo. Os índices inversos tamén permítenche acelerar as operacións de envío de obxectos ao executar ordes de recuperación e inserción transferindo directamente datos xa preparados desde o disco. Por defecto, non se crean índices inversos; para xeralos, cómpre activar a configuración "git config pack.writeReverseIndex true" e, a continuación, empaquetar o repositorio co comando "git repack -Ad".

  • Engadíronse optimizacións de rendemento baseadas na aparencia no formato de ficheiro commit-graph, utilizadas para optimizar o acceso á información sobre commits, novos datos sobre o número de xeración de commit, que se poden usar para acelerar operacións adicionais con commits.
  • Engadíronse opcións para redefinir o nome da rama principal usada por defecto nos novos repositorios (configuración init.defaultBranch). Ao acceder a repositorios externos, git tenta comprobar a rama apuntada por HEAD, é dicir. se o servidor externo usa a rama "principal" de forma predeterminada, entón a operación "git clone" tentará comprobar a "principal" localmente. Git 2.31 agora admite este tipo de verificación para repositorios baleiros. Por exemplo, cando se clona un repositorio novo localmente antes de engadirlle os primeiros parches, a copia local conterá agora o nome ascendente predeterminado definido no servidor externo.
  • Engadiuse unha opción --disk-usage ao comando "git rev-list" para proporcionar un resumo do tamaño dos obxectos.
  • En previsión do próximo cambio no backend de combinación, a detección de cambio de nome optimizouse significativamente.
  • O soporte para a biblioteca de expresións regulares PCRE1 heredada foi descontinuado.
  • É posible prohibir por forza o uso de ligazóns acurtadas, independentemente do algoritmo de hash. A prohibición habilitase asignando o valor "non" ao parámetro core.abbrev.
  • Engadiuse a opción "--path-format=(absolute|relative)" ao comando "git rev-parse" para especificar de forma explícita se se deberían sacar camiños relativos ou absolutos.
  • Os scripts de finalización de Bash facilitan engadir regras de finalización para os teus propios subcomandos "git".
  • Engadida unha opción --stdin ao comando "git bundle" para ler referencias do fluxo de entrada estándar.
  • Engadiuse unha nova opción "--diff-merges=" ao comando "git log".
  • Engadiuse a opción "--deduplicatecan" ao comando "git ls-files" para eliminar a saída duplicada.
  • Engadíronse novas máscaras para excluír unha serie de confirmacións: "^!" e "^-".
  • Engadíronse opcións "--left-only" e "--right-only" ao comando "git range-diff" para mostrar só un lado do intervalo que se está a comparar.
  • Engadíronse opcións --skip-to=" e "--rotate-to=" aos comandos "git diff" e "git log" para saltar ou moverse ao final dos camiños iniciais.
  • Engadiuse a opción "--skip-to=" ao comando "git difftool" para retomar unha sesión interrompida desde unha ruta arbitraria.
  • O Código de conduta, que define os principios básicos para resolver situacións de conflito entre desenvolvedores, actualizouse á versión 2.0 (anteriormente utilizábase a versión 1.4).

    Fonte: opennet.ru

Engadir un comentario