Git 2.51 chega com melhorias importantes de desempenho e novos recursos

git 2.51

Após dois meses de intenso trabalho, a comunidade de desenvolvimento de O Git apresenta a versão 2.51 do Git, uma atualização que Reúne 506 mudanças, das quais participaram 91 desenvolvedores, dos quais 21 contribuíram pela primeira vez.

Esta versão apresenta melhorias projetadas para melhorar o desempenho e simplificar o gerenciamento de repositórios, incluindo otimizações de desempenho para git-push e git-fetch, bem como diversas alterações em direção à nova ramificação 3.x.

Novos recursos principais do Git 2.51

Um dos destaques do Git 2.51 é o Otimizando os comandos git push e git fetch em repositórios com um grande número de referências. A chave para essa melhoria está na atualização em lote, que processa vários links em uma única transação, em vez de individualmente.

Graças a esta otimização, O backend reftable agora supera o backend de arquivos tradicional.Em testes com repositórios contendo até 10 referências, o desempenho do git fetch aumentou em 000x para reftable e 22x para arquivos, enquanto o git push melhorou em 1.25x e 18x, respectivamente.

Outra inovação importante é o iIntrodução dos chamados pacotes cruft, projetado para armazenar objetos inacessíveis que não estejam vinculados a ramificações ou tags. Esses objetos, que antes estavam dispersos, agora pode ser gerenciado em embalagens separadass, o que os torna mais fáceis de controlar e reduz o tamanho dos índices de vários pacotes (MIDX).

com o nova configuração repack.MIDXMustContainCruft, o Git evita incluir esses objetos nos índices principaisEm testes no GitHub, essa configuração reduziu o tamanho do índice em 38%, acelerou as gravações em 35% e melhorou as leituras em 5%.

Nova abordagem para empacotamento de objetos

El O comando git pack-objects incorpora a opção –path-walk, que introduz um método inovador para reorganizar arquivos de embalagem. Em vez de processar objetos com base em seus hashes, o Git agora pode iterar entre eles com base no caminho do arquivo, compactando aqueles que compartilham o mesmo local. Essa abordagem elimina a necessidade de pré-classificar objetos e resulta em arquivos de compactação menores e mais eficientes.

Com esta versão também Um novo formato para troca de estados e índices de árvores de trabalho criados com o Git Stash foi padronizado.. Agora é possível exportar e importar stashes como branches ou tags, facilitando a movimentação de estados de um sistema para outro.

Por exemplo:

git stash export --to-ref refs/stashes/mi-stash git push origem refs/stashes/mi-stash git fetch origem '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash

Melhorias nos comandos clássicos

Vários Os comandos Git receberam atualizações relevantes:

  • git cat-file agora relata objetos e submódulos ausentes, mostrando identificadores em vez de apenas marcar como “ausentes”.
  • O git log se beneficia das otimizações do filtro Bloom, acelerando pesquisas com múltiplos caminhos de arquivo.
  • Os comandos git switch e git restore, considerados experimentais desde 2019, finalmente estão estabilizados como alternativas modernas ao git checkout.
  • O comando git whatchanged, equivalente a git log –raw, está obsoleto e será removido no Git 3.0.
  • git for-each-ref recebe a opção –start-after, que junto com –count permite a paginação da saída.
  • git merge e git pull agora incluem a opção –compact-summary, que fornece um formato de resumo mais conciso.

Suporte C99 e novas regras de contribuição

O Git continua adaptando seu código às características do padrão C99. Embora um compilador compatível seja necessário desde 2021, os desenvolvedores estão agindo com cautela para manter a compatibilidade com compiladores que o implementam apenas parcialmente.

Além disso, uma mudança significativa foi introduzida na política de contribuição: Os patches agora podem ser enviados sob um pseudônimo, uma decisão alinhada às regras do kernel Linux e projetada para oferecer maior flexibilidade aos colaboradores.

Olhando para o Git 3.0

El A equipe de desenvolvimento também atualizou o roteiro para o Git 3.0., onde duas mudanças importantes se destacam: o uso padrão do SHA-256 como identificador de objeto e a adoção do formato reftable para armazenar referências de ramificação e tags. Essas melhorias visam aumentar a segurança e a eficiência em repositórios cada vez maiores e mais complexos.

fonte: https://lore.kernel.org