E meio ano não se passou: o sistema de controle de versão Git 2.29 foi lançado



Olá,% username%, hoje, uma ótima notícia: no domínio público apareceu o lançamento do sistema de controle distribuído versão 2.29.0 do Git . Provavelmente, no Habré não vale a pena dizer o que é, pois o Git ainda é um dos melhores sistemas.



A nova versão contém 627 alterações de uma vez, que foram feitas por 89 desenvolvedores. Vamos falar sobre as principais mudanças e melhorias no corte.



  • SHA-256 SHA-1 . Git . . , SHA-1 , Git . SHA3-256, SHA2-256, SHA2 Git . , , . , , - — .


  • Agora o Git adicionou a capacidade de incluir um novo formato de objeto ao criar um repositório:


$ git init --object-format=sha256 repo
   Initialized empty Git repository in /home/ttaylorr/repo/.git/
 
   $ cd repo
   $ echo 'Hello, SHA-256!' >README.md
   $ git add README.md
   $ git commit -m "README.md: initial commit"
   [master (root-commit) 6e92961] README.md: initial commit
    1 file changed, 1 insertion(+)
    create mode 100644 README.md
 
   $ git rev-parse HEAD
   6e929619da9d82c78dd854dfe237c61cbad9e95148c1849b1f96ada5ee800810


Você só pode escolher entre SHA-1 e SHA-256, não há possibilidade de combinar diferentes hashes em um repositório.



  • Os comandos git fetch e git push agora oferecem suporte a especificações de link excludentes que estendem as regras para links correspondentes entre branches em repositórios locais e externos. Este recurso será útil em situações em que você precisa não apenas selecionar, mas também excluir algumas ramificações do mapeamento. Então, quando você precisar verificar todos os branches "refs / heads / *", exceto um "refs / heads / ref-to-exclude", antes você teve que especificar a lista completa usando este script:


   $ git ls-remote origin 'refs/heads/*' |
     grep -v ref-to-exclude |
     awk '{ print $2:$2 }' |
     xargs git fetch origin


  • Agora existe um operador de exceção "^". As expressões com este operador aceitam modelos, mas não podem se referir a identificadores de objeto. Um comando usando o novo operador pode ter a seguinte aparência:


   $ git fetch origin 'refs/heads/*:refs/heads/*' ^refs/heads/ref-to-exclude


Além disso, você pode usar exclusões nas configurações:



   $ git config --add remote.origin.fetch ^refs/heads/foo


  • O "git shortlog" agora tem a capacidade de agrupar commits pelo conteúdo de campos adicionais, "Revisado por:" e "Coautorizado por:", não apenas pelo autor ou autor do commit. Portanto, se você precisa exibir uma lista dos desenvolvedores que revisam mais ativamente, precisa de um comando:


 $ git shortlog -ns --group=trailer:reviewed-by v2.28.0.. | head -n5
    40  Eric Sunshine
    10  Taylor Blau
     4  brian m. carlson
     2  Elijah Newren
     1  Jeff King


  • Várias instruções --group podem ser especificadas na inicialização e usar a opção --format. Portanto, para acompanhar os co-autores ou colaboradores, agora você precisa especificar o seguinte:


   $ git shortlog -ns --group=author --group=trailer:co-authored-by
   $ git shortlog --format="...helped %an on %as" --group=trailer:helped-by v2.28.0..v2.29.0


  • Se ocorrer um conflito durante uma operação git merge, o cabeçalho da mensagem de confirmação agora é colocado entre colchetes para separar explicitamente os dados da confirmação das mensagens de diagnóstico do Git.
  • Os desenvolvedores trouxeram de volta a segunda versão do protocolo de comunicação Git, que foi desabilitada na versão 2.27. Assim, um bug que levava a problemas de estabilidade foi corrigido.
  • A opção "--first-parent" foi adicionada ao comando git bisect, que é usado para detectar uma revisão, para mudar a seleção de commits entre a revisão de trabalho conhecida e a revisão na qual o problema ocorreu.


Você pode ver todas as inovações aqui .






All Articles