Versión de control de fonte de Git 2.52

Tras tres meses de desenvolvemento, lanzouse Git 2.52, un sistema de xestión de código fonte distribuído. Git presume de alto rendemento e proporciona capacidades de desenvolvemento non lineal baseadas na ramificación e a fusión. Para garantir a integridade histórica e a resiliencia aos cambios retroactivos, usa o hash implícito de todo o historial anterior en cada commit, así como sinaturas dixitais de etiquetas e commits individuais. Git ten licenza GPLv2+.

En comparación coa versión anterior, a nova versión inclúe 637 cambios, aportados por 94 desenvolvedores (33 dos cales eran novos no desenvolvemento en Git). Novidades principais (1, 2, 3):

  • Engadiuse o comando "git last-modified" para mostrar unha lista de ficheiros nunha revisión especificada e os commits que modificaron cada ficheiro por última vez. $ git last-modified HEAD b56f6dcd7b4c90192018e848d0810f091d092913 test.h 29330ae4b820147c98e723399e9438c8bee60a8a test1.c 573ad8917beb99dc643b6e7f5c117a294384a575 test2.c
  • Engadiuse o comando "git repo" para realizar accións relacionadas coa recuperación de información dun repositorio. Fornécense dous subcomandos, "git repo info" e "git repo structure", que mostran información sobre a configuración do repositorio e detalles sobre a estrutura do repositorio (por exemplo, podes atopar o número de referencias e obxectos no repositorio). $ git repo info object.format references.format object.format=sha1 references.format=reftable $ git repo structure | Estrutura do repositorio | Valor | | ——————— | —— | | * Referencias | | | * Contador | 1983 | | * Ramas | 4 | | * Etiquetas | 1125 | | * Remotos | 854 | | * Outros | 0 | | | | | * Obxectos alcanzables | | | * Contador | 518955 | | * Commits | 77469 | | * Árbores | 188865 | | * Blobs | 251631 | | * Etiquetas | 990 |
  • O comando git refs actualizouse con tres subcomandos que unifican as operacións de baixo nivel dispares e superpostas en referencias (git for-each-ref, git show-ref, git update-ref e git pack-refs):
    • "git refs optimize" — optimización do backend de almacenamento de referencia (semellante a "git pack-refs").
    • "git refs list" - mostra unha lista de todas as referencias (semellante a "git for-each-ref" ou "git show-ref").
    • "git refs exists" — comproba a existencia dunha referencia (análogo a "git show-ref --exists").
  • O formato para exportar e importar o historial de confirmacións ampliouse para admitir sinaturas criptográficas usando identificadores de obxectos baseados en SHA-1 e SHA-256. O comando "git fast-import" agora admite o procesamento de etiquetas asinadas de xeito similar ás confirmacións asinadas. Engadíronse as opcións "--signed-commits=<modo>" e "--signed-tags=<modo>" para controlar o procesamento de confirmacións e etiquetas asinadas durante a importación (o modo pode ser verbatim, warn-verbatim, warn-stri, strip ou abort).
  • O comando "git maintenance" agora admite unha nova estratexia "geométrica" ​​("git config set maintenance.strategy geometric"), que reduce o tempo de mantemento para grandes repositorios únicos. En comparación coa estratexia dispoñible anteriormente, que usaba unha lóxica similar a "git gc", a nova estratexia evita reempaquetar todos os obxectos e elimina as operacións que requiren moitos recursos, como a fusión de todos os ficheiros de empaquetado (cando sexa posible, a fusión realízase por partes e sen purgar os obxectos eliminados).
  • Engadiuse o comando «git sparse-checkout clean» para facilitar a restauración do estado do directorio de traballo eliminando ficheiros que non coincidan coa nova definición de sparse-checkout e que non deberían estar presentes na copia local segundo a configuración actual de sparse-checkout.
  • Para eliminar a complexidade da base de código e simplificar o mantemento, realizouse unha refactorización para reducir o uso da variable global the_repository.
  • Ampliouse o uso de filtros de Bloom, unha estrutura probabilística para comprobar a pertenza a conxuntos que permite falsos positivos de elementos que faltan pero impide a omisión de elementos existentes. Os filtros de Bloom agora úsanse para acelerar as buscas no historial de cambios ao especificar comodíns nas rutas de ficheiros, por exemplo, "foo/bar/*/baz".
  • O rendemento do comando "git describe" aumentou ata un 30 % grazas ao uso dunha cola de prioridade. Aceleráronse as operacións de renomeamento de referencias en "git remote rename". Ampliouse o uso de índices en "git ls-files". O comando "git log -L" acelerouse significativamente ao eliminar as comparacións innecesarias de tres niveis ao procesar confirmacións de fusión. Realizáronse optimizacións na biblioteca xdiff.
  • Introduciuse unha implementación opcional de Rust dalgunhas funcións internas, como a codificación e descodificación de enteiros de lonxitude variable. O código Rust non se usa por defecto e require que o indicador de compilación WITH_RUST estea activado. No futuro, espérase que se reescriban compoñentes internos de Git máis significativos en Rust e Rust engadirase como unha dependencia de compilación obrigatoria en Git 3.0.
  • Actualizouse a lista de cambios importantes que se aplicarán na rama Git 3.0. En Git 3.0, a configuración predeterminada de init.defaultBranch cambiará a "main", o que significa que a rama predeterminada nos repositorios creados co comando "git init" chamarase "main" en lugar de "master". Tamén se indica un cambio a identificadores de obxectos baseados en SHA-256 ao inicializar novos repositorios. Para simplificar a portabilidade entre repositorios con identificadores de obxectos baseados en SHA-1 e SHA-256, agora está dispoñible a capacidade de enviar e extraer elementos desde un repositorio usando un algoritmo hash e un repositorio usando un algoritmo hash diferente.

Fonte: opennet.ru

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster