Versión de control de fonte de Git 2.37

Anunciuse o lanzamento do sistema de control de fontes distribuído Git 2.37. 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, aceptáronse 395 cambios na nova versión, preparada coa participación de 75 desenvolvedores, dos cales 20 participaron no desenvolvemento por primeira vez. Principais novidades:

  • O mecanismo de índices parciais (índice escaso), que abarca só unha parte do repositorio, preparouse para un uso xeneralizado. Os índices parciais poden mellorar o rendemento e aforrar espazo nos repositorios que realizan operacións de clonación parcial (comprobación escasa) ou traballan cunha copia incompleta do repositorio. A nova versión completa a integración de índices parciais nos comandos git show, git sparse-checkout e git stash. O beneficio de rendemento máis notable do uso de índices parciais vese co comando git stash, que experimentou un aumento do 80% na velocidade de execución nalgunhas situacións.
  • Implementouse un novo mecanismo de "cruft packs" para empaquetar obxectos inalcanzables aos que non se fai referencia no repositorio (non se fai referencia por ramas ou etiquetas). Os obxectos inalcanzables son eliminados polo colector de lixo, pero permanecen no repositorio durante un tempo determinado antes de ser eliminados para evitar condicións de carreira. Para rastrexar o período de aparición de obxectos inalcanzables, é necesario achegarlles etiquetas co tempo de cambio de obxectos similares, o que non permite almacenalos nun ficheiro de paquete no que todos os obxectos teñan un tempo de cambio común. Anteriormente, gardar cada obxecto nun ficheiro separado provocaba problemas cando había un gran número de obxectos novos e inalcanzables que aínda non eran aptos para a eliminación. O mecanismo proposto de "paquetes cruft" permítelle almacenar todos os obxectos inalcanzables nun ficheiro de paquete e reflectir os datos sobre o tempo de modificación de cada obxecto nunha táboa separada almacenada nun ficheiro coa extensión ".mtimes".
  • Para Windows e macOS, hai un mecanismo integrado para rastrexar os cambios no sistema de ficheiros, o que lle permite evitar iterar por todo o directorio de traballo cando se realizan operacións como "estado de git". Anteriormente, para rastrexar os cambios, as utilidades externas para rastrexar os cambios no FS, como Watchman, podían conectarse a través de ganchos, pero isto requiría a instalación de programas e configuración adicionais. Agora a funcionalidade especificada está integrada e pódese activar co comando "git config core.fsmonitor true".
  • No comando "git sparse-checkout", o soporte para unha alternativa ao modo "—cone", o método de definición de modelos para a clonación parcial, foi declarado obsoleto, o que permite, ao determinar a parte do repositorio que está suxeita a a operación de clonación, para listar ficheiros individuais usando a sintaxe “.gitignore”, que non permite o uso de índices parciais de optimización.
  • Aumento da flexibilidade na configuración da chamada fsync() para limpar os cambios no disco. Compatibilidade coa estratexia de sincronización "batch" engadiuse ao parámetro "core.fsyncMethod", que permite axilizar o traballo ao escribir un gran número de ficheiros individuais acumulando cambios na caché de escritura, que se restablece mediante un único fsync() chamar. A proba, que resultou en engadir 500 ficheiros mediante o comando "git add", completouse en 0.15 segundos cando se habilitou o novo modo, mentres que a chamada a fsync() tardou 1.88 segundos para cada ficheiro e sen usar fsync - 0.06 segundos.
  • Os comandos de cruzamento de ramas como "git log" e "git rev-list" agora teñen unha opción "-since-as-filter=X" que che permite filtrar información sobre commits que son máis antigas que "X". A diferenza da opción "—since", o novo comando implétase como un filtro que non detén a busca despois da primeira confirmación máis antiga que o tempo especificado.
  • No comando "git remote", ao especificar a marca "-v", móstrase información sobre os clons parciais do repositorio.
  • Engadiuse a configuración "transfer.credentialsInUrl", que pode tomar os valores "advertir", "morrer" e "permitir". Se se especifica no parámetro "remote. .url", o intento de realizar unha operación "fetch" ou "push" producirá un erro se a configuración de "transfer.credentialsInUrl" está definida como "morre", ou un aviso se se establece como "advertir".
  • Por defecto, a nova implementación do modo interactivo do comando "git add -i", reescrito de Perl a C, está habilitada.

Fonte: opennet.ru

Engadir un comentario