Lançamento do sistema de controle de versões Git 2.35

Após dois meses de desenvolvimento, foi lançada a versão do sistema de controle de versões distribuído Git 2.35. O Git é um dos sistemas de controle de versões mais populares, confiáveis e de alto desempenho, oferecendo ferramentas flexíveis 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, é utilizado o hash implícito de todo o histórico anterior em cada commit, sendo também possível a verificação digital com assinaturas dos desenvolvedores para tags e commits específicos.

Em comparação com a versão anterior, esta nova versão inclui 494 alterações, preparadas com a participação de 93 desenvolvedores, dos quais 35 participaram do desenvolvimento pela primeira vez. Principais novidades:

  • As funcionalidades para utilização de chaves SSH para a assinatura de objetos Git foram expandidas. Para distinguir a validade de várias chaves ao longo do tempo, foi adicionada a compatibilidade com as diretivas OpenSSH "valid-before" e "valid-after", permitindo um funcionamento adequado com assinaturas após a rotação da chave de um dos desenvolvedores. Anteriormente, havia um problema ao separar as assinaturas de chaves antigas e novas — se a chave antiga fosse removida, não seria possível verificar as assinaturas feitas com ela, e se fosse mantida, haveria a possibilidade de criar novas assinaturas com a chave antiga, que já havia sido substituída. Com o uso de valid-before e valid-after, é possível dividir a área de validade das chaves com base no tempo de criação da assinatura.
  • Na configuração merge.conflictStyle, que permite escolher o modo de exibição das informações de conflito durante a mesclagem, foi adicionada a opção "zdiff3", que move para fora da área de conflito todas as linhas típicas indicadas no início ou no final do conflito, permitindo uma apresentação mais compacta das informações.
  • O comando “git stash” agora possui o modo “—staged”, que permite ocultar apenas as alterações adicionadas ao índice, por exemplo, em situações onde é necessário adiar temporariamente parte de alterações complexas, para primeiro adicionar o que já está pronto e depois lidar com o restante em outro momento. O modo é semelhante ao comando “git commit”, que registra apenas as alterações que foram colocadas no índice, mas ao invés de criar um novo commit em “git stash —staged”, o resultado é salvo na área temporária stash. Após isso, quando as mudanças forem necessárias, podem ser recuperadas com o comando “git stash pop”.
  • O comando “git log” agora possui um novo especificador de formato “—format=%(describe)”, que permite combinar a saída de “git log” com o resultado da execução do comando “git describe”. Os parâmetros para “git describe” são especificados diretamente dentro do especificador (“—format=%(describe:match=,exclude=)”), onde também é possível incluir tags abreviadas (“—format=%(describe:tags=)”) e configurar o número de caracteres hexadecimais para identificação de objetos (“—format=%(describe:abbrev=)”). Por exemplo, para exibir os 8 últimos commits, cujas tags não possuem marcação de candidato a versão, e especificar identificadores de 8 caracteres, pode-se usar o comando: $ git log -8 —format='%(describe:exclude=*-rc*,abbrev=13)’ v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642-gb56bd95bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • Na configuração user.signingKey foi implementado o suporte a novos tipos de chaves, que não se limitam ao tipo “ssh-” e à especificação do caminho completo do arquivo da chave. Tipos alternativos são definidos usando o prefixo “key::”, por exemplo, “key::ecdsa-sha2-nistp256” para chaves ECDSA.
  • A velocidade de geração da lista de alterações no modo “—histogram” foi significativamente aumentada, assim como ao usar a opção “—color-moved-ws”, que controla a iluminação de espaços em um diff colorido.
  • No comando “git jump”, utilizado para fornecer ao Vim informações sobre as transições exatas para uma posição desejada no arquivo ao resolver conflitos de mesclagem, revisar diferenças ou executar operações de busca, foi disponibilizada a possibilidade de restringir os conflitos de mesclagem abrangidos. Por exemplo, para limitar as operações apenas ao diretório “foo”, pode-se usar “git jump merge — foo”, e para excluir o diretório “Documentation” da análise — “git jump merge — ‘:^Documentation'”
  • Foi realizado um trabalho de padronização do uso do tipo "size_t" em vez de "unsigned long" para valores que representam o tamanho de objetos, permitindo a aplicação dos filtros "clean" e "smudge" em arquivos maiores que 4 GB em todas as plataformas, incluindo aquelas com o modelo de dados LLP64, onde o tipo "unsigned long" é limitado a 4 bytes.
  • Adicionada a opção "--empty=(stop|drop|keep)" ao comando "git am", permitindo escolher o comportamento para emails vazios que não contêm patches ao processar patches a partir da caixa de entrada. O valor "stop" encerrará toda a operação de aplicação de patches, "drop" ignorará o patch vazio e "keep" criará um commit vazio.
  • Adicionada suporte a índices parciais (sparse index) nos comandos "git reset", "git diff", "git blame", "git fetch", "git pull" e "git ls-files", permitindo melhorar o desempenho e economizar espaço em repositórios onde operações de clonagem parcial (sparse-checkout) são realizadas.
  • O comando "git sparse-checkout init" foi declarado obsoleto e deve ser substituído por "git sparse-checkout set".
  • Adicionada a implementação inicial de um novo backend "reftable" para armazenar referências, como branches e tags, em repositórios. O novo backend utiliza armazenamento em bloco aplicado pelo projeto JGit e otimizado para armazenar um número muito grande de referências. O backend ainda não está integrado ao sistema de referências (refs) e não está pronto para uso prático.
  • A paleta de cores do comando "git grep" foi alinhada com a ferramenta GNU grep.

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