Git 2.35 versão de controle de origem

Após dois meses de desenvolvimento, o sistema de controle de origem distribuído Git 2.35 foi lançado. Git é um dos sistemas de controle de versão mais populares, confiáveis ​​e de alto desempenho, fornecendo ferramentas flexíveis de desenvolvimento não linear baseadas em ramificação e fusão. Para garantir a integridade do histórico e a resistência a mudanças retroativas, é utilizado hash implícito de todo o histórico anterior em cada commit; também é possível certificar tags individuais e commits com assinaturas digitais dos desenvolvedores.

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

  • As possibilidades de uso de chaves SSH para assinar digitalmente objetos Git foram ampliadas. Para limitar o período de validade de várias chaves, foi adicionado suporte para as diretivas OpenSSH “válido antes” e “válido depois”, com as quais você pode garantir o trabalho correto com assinaturas após a rotação da chave por um dos desenvolvedores. Antes disso, havia um problema com a separação das assinaturas pela chave antiga e pela nova - se você excluir a chave antiga, será impossível verificar as assinaturas feitas com ela, e se você deixá-la, ainda será possível crie novas assinaturas com a chave antiga, que já foi substituída por outra chave. Usando válido antes e válido depois você pode separar o escopo das chaves com base na hora em que a assinatura foi criada.
  • Na configuração merge.conflictStyle, que permite selecionar o modo de exibição de informações sobre conflitos durante uma mesclagem, apareceu o suporte para o modo “zdiff3”, que move todas as linhas padrão especificadas no início ou final do conflito para fora do conflito área, o que permite uma apresentação mais compacta das informações.
  • O modo “--staged” foi adicionado ao comando “git stash”, que permite ocultar apenas as alterações adicionadas ao índice, por exemplo, em uma situação em que você precisa adiar temporariamente algumas das alterações complexas para primeiro adicione o que já está pronto e cuide do resto depois de um tempo. O modo é semelhante ao comando “git commit”, escrevendo apenas as alterações colocadas no índice, mas em vez de criar um novo commit em “git stash —staged”, o resultado é armazenado na área temporária do stash. Assim que as alterações forem necessárias, elas podem ser revertidas com o comando “git stash pop”.
  • Um novo especificador de formato foi adicionado ao comando "git log", "--format=%(describe)", que permite combinar a saída de "git log" com a saída do comando "git description". Os parâmetros para "git description" são especificados diretamente dentro do especificador ("-format=%(describe:match= , excluir= )"), onde você também pode incluir tags abreviadas ("-format=%(describe:tags= )") e configure o número de caracteres hexadecimais para identificar objetos (“—format=%(describe:abbrev= )"). Por exemplo, para listar os últimos 8 commits cujas tags não possuem uma tag release candidate e especificar identificadores de 8 caracteres, você pode usar o comando: $ git log -8 —format='%(describe:exclude=*-rc *,abrev=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-gb 56bd95 bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • A configuração user.signingKey agora oferece suporte a novos tipos de chaves que não estão limitadas ao tipo “ssh-” e especificam o caminho completo do arquivo para a chave. Tipos alternativos são especificados usando o prefixo "key::", por exemplo "key::ecdsa-sha2-nistp256" para chaves ECDSA.
  • A velocidade de geração de uma lista de alterações no modo “—histograma”, bem como ao usar a opção “—color-moved-ws”, que controla o destaque de espaços em uma comparação de cores, foi visivelmente aumentada.
  • O comando "git jump", usado para fornecer ao Vim informações sobre o salto exato para a posição desejada em um arquivo ao analisar conflitos de mesclagem, visualizar diferenças ou executar uma operação de pesquisa, fornece a capacidade de restringir os conflitos de mesclagem cobertos. Por exemplo, para limitar as operações apenas ao diretório "foo", você pode especificar "git jump merge - foo" e para excluir o diretório "Documentation" do processamento - "git jump merge - ':^Documentation'"
  • Foram feitos trabalhos para padronizar o uso do tipo "size_t" em vez de "unsigned long" para valores que representam o tamanho dos objetos, o que possibilitou o uso de filtros "limpo" e "mancha" com arquivos maiores que 4 GB em todas as plataformas, incluindo plataformas com o modelo de dados LLP64, do tipo "unsigned long" no qual é limitado a 4 bytes.
  • A opção “-empty=(stop|drop|keep)” foi adicionada ao comando “git am”, que permite selecionar o comportamento para mensagens vazias que não contêm patches ao analisar patches da caixa de correio. O valor “stop” encerrará toda a operação de patch, “drop” irá pular um patch vazio e “keep” criará um commit vazio.
  • Adicionado suporte para índices parciais (índice esparso) aos comandos "git reset", "git diff", "git culpa", "git fetch", "git pull" e "git ls-files" para melhorar o desempenho e economizar espaço em repositórios, nos quais são executadas operações de clonagem parcial (checkout esparso).
  • O comando "git sparse-checkout init" foi descontinuado e deve ser substituído por "git sparse-checkout set".
  • Adicionada implementação inicial de um novo backend "reftable" para armazenar referências como ramificações e tags no repositório. O novo backend usa armazenamento em bloco usado pelo projeto JGit e é otimizado para armazenar um grande número de referências. O backend ainda não está integrado ao sistema refs e não está pronto para uso prático.
  • A paleta de cores do comando "git grep" foi ajustada para corresponder ao utilitário GNU grep.

Fonte: opennet.ru

Adicionar um comentário