Lançamento do sistema de controle de versão de código fonte Git 2.48

Foi lançada a versão da sistema de controle de versões distribuído Git 2.48. O Git se destaca pela sua alta performance e oferece ferramentas para desenvolvimento não linear, baseadas em ramificação e mesclagem de branches. Para garantir a integridade do histórico e a resistência a alterações 'retroativas', utiliza-se a hash implícita de todo o histórico anterior em cada commit, além da certificação com assinaturas digitais dos desenvolvedores de tags e commits individuais. O código do Git é distribuído sob a licença GPLv2+.

Em comparação com a versão anterior, a nova versão inclui 605 alterações, realizadas com a participação de 93 desenvolvedores, dos quais 35 estão contribuindo pela primeira vez. As principais novidades são:

  • Implementada a capacidade de construção usando o sistema de build Meson, além do GNU Make e CMake. Para construir o Git, agora pode-se usar o comando 'meson setup build && ninja -C build'. Observa-se que o Makefile, utilizado com o GNU Make, cresceu para 3887 linhas e não é tão simples quanto se gostaria. A ferramenta Meson simplifica o trabalho com o sistema de build, é conveniente para builds multiplataforma e torna a construção mais acessível para iniciantes ou desenvolvedores sem experiência com a ferramenta Make. Não estão planejadas a suspensão do suporte ao Make e CMake no futuro próximo.
  • Adicionadas opções de build que permitem o uso de implementações alternativas do hash SHA-1 ao calcular somas de verificação utilizadas para garantir a integridade de blocos de dados em arquivos pack. A performance do cálculo das somas de verificação é muito importante, por exemplo, cerca de 78% do tempo do processador é gasto no cálculo ao clonar o repositório do kernel Linux. A implementação padrão inclui verificações adicionais de colisões e proteção contra ataques ao SHA-1, como SHAttered e Shambles. Essa proteção, que consome recursos adicionais, faz sentido apenas ao usar o SHA-1 para fins criptográficos e é inútil ao verificar a integridade de dados indexados.

    Para a construção do Git com uma implementação mais rápida do SHA-1, não adequada para sistemas criptográficos, foram propostas uma série de opções *_UNSAFE, como 'OPENSSL_SHA1_UNSAFE'. No GitHub, a construção com o SHA-1 simplificado permitiu um aumento de 10-13% no desempenho das operações de extração e clonagem de dados.

  • Adicionada a capacidade de usar na equipe "range-diff" a opção "--remerge-diff", que permite mostrar as diferenças entre o resultado geral da mesclagem e os dados reais refletidos no commit após o processamento do comando "merge". Ao usar a opção "--remerge-diff", as diferenças entre as resoluções de conflitos não são divididas para cada branch pai, mas mostram as diferenças gerais entre o arquivo com conflitos de mesclagem e o arquivo em que os conflitos foram resolvidos. No contexto do comando "range-diff", a nova opção pode ser útil para comparar conjuntos de commits após a transferência da sequência de commits pela equipe "rebase" com a opção "--rebase-merges".
  • Adicionada a capacidade de executar um conjunto de testes do Git com a ativação do modo de detecção de vazamentos de memória. Como o git fornece utilitários que terminam a execução após concluir a função chamada, os vazamentos de memória não eram considerados um grande problema anteriormente. A necessidade de eliminar completamente os vazamentos de memória tornou-se relevante após o início do trabalho na extração da funcionalidade interna para uma biblioteca separada, que pode ser aplicada em processos de longa duração.
  • Iniciada a formação de uma lista de modos e funcionalidades obsoletos, cujo suporte está planejado para ser descontinuado no futuro. Espera-se que a remoção da funcionalidade obsoleta ocorra na versão 3.0 do Git, que incluirá alterações que quebram a compatibilidade retroativa.
  • Continuada a otimização do funcionamento do comando "git for-each-ref", que lista referências no repositório. A otimização, que combina manipuladores para filtragem de referências e formatação da saída, agora é aplicada não apenas para a saída não ordenada, mas também ao especificar a opção "--sort".
  • A implementação do backend "reftable" foi aprimorada com armazenamento em bloco para um armazenamento eficiente de repositórios de referências a branches e tags. O reftable permite acelerar significativamente a busca, leitura e gravação em repositórios com um número muito grande de referências. Na nova versão, a chamada a algumas APIs auxiliares foi eliminada para remover a biblioteca libgit das dependências de compilação. Foi implementado um tratamento adaptativo de erros retornados pelas funções de alocação de memória (a falta de memória agora não resulta em uma falha do programa). As operações de criação de referências foram aceleradas e o consumo de memória foi reduzido.
  • Na implementação de clonagem parcial, foram resolvidos problemas que levavam a loops e corrupção do repositório após a execução do comando "git gc".
  • Ao executar o comando "git fetch ", se a referência "refs/remotes//HEAD" não estiver presente no sistema local, mas houver uma branch no lado remoto à qual HEAD se refere, "refs/remotes//HEAD" agora será redirecionado para essa branch. Para gerenciar a sincronização de "refs/remotes//HEAD" com o HEAD do lado remoto, foi adicionada a configuração "remote..followRemoteHEAD".
  • Foi adicionada a configuração "remote..serverOption", similar à opção de linha de comando "—serverOption=".
  • No comando "git rebase —rebase-merges", foi garantido o uso de nomes de branches como marcas sempre que possível.
  • Nos comandos 'git notes add' e 'git notes append', foi adicionado o flag '-e', que abre a nota em um editor de texto externo especificado pela variável de ambiente GIT_EDITOR.
  • A compatibilidade com o GCC 15 e o padrão C23 foi aprimorada.
  • O suporte a versões antigas do libcURL e do Perl foi descontinuado.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster