Novidades do Git 2.52: comandos, desempenho e segurança

  • Novos comandos: git last-modified, git repo e adições ao git refs para operações comuns.
  • Manutenção aprimorada: tarefa geométrica na manutenção do Git e múltiplas otimizações de desempenho.
  • Segurança em andamento: primeiros passos rumo à interoperabilidade SHA-1/SHA-256 e uma alteração padrão para "main" na próxima versão principal.
  • Mais funcionalidades: melhorias nos filtros Bloom, limpeza de checkout esparso e novos recursos em commit-graph, stash e diff-tree.

git 2.52

Git 2.52 Já está disponível como uma atualização estável para este popular sistema de controle de versão distribuído. A versão vem com Novos recursos, ajustes de manutenção e melhorias de desempenho. Resultado do trabalho de mais de 94 colaboradores, 33 dos quais participaram do projeto pela primeira vez.

Entre as mudanças mais notáveis ​​estão novos subcomandos para explorar repositórios, um fluxo de trabalho de manutenção mais inteligente e o progresso na transição para o SHA-256. Tudo isso é entregue com uma abordagem consistente e discreta. abordagem prática que gerenciam repositórios de tamanhos variados.

Novos comandos do Git 2.52 para explorar repositórios.

A novidade mais marcante é git last-modifiedProjetado para obter de forma eficiente o commit mais recente que modificou cada caminho. Em repositórios com muitas entradas, essa abordagem evita travessias repetidas do histórico e pode ser várias vezes mais rápido do que encadear ls-tree + logDe acordo com testes internos, a redução do tempo de resposta de segundos para milissegundos em cenários reais é possível.

Motor last-modified Foi desenvolvido ao longo de anos no GitHub sob o nome árvore-da-culpaalimentando sua "culpa" em nível de árvore desde 2012. Posteriormente, Engenheiros do GitLab Eles aprimoraram o conjunto de patches para integrá-lo ao Git 2.52, embora ainda haja recursos a serem adicionados, como um formatação de disco para armazenar resultados em cache de execuções anteriores.

A versão experimental também chega. git repoUm guarda-chuva para recursos de repositório de consulta. Com git repo info Você consegue dizer se é? nu o raso, o formato de objetos e referências, e com git repo structure são impressos estatística estrutural (contagem de commits, árvores, blobs, branches, tags, etc.). Além disso, info incorpora a opção abreviada -z e é capaz de relate o formato do objeto usava.

Para aqueles que trabalham em um nível básico e possuem referências, git refs suma git refs list (pseudônimo de git for-each-ref) E git refs exists (semelhante a git show-ref --existsEles não oferecem capacidades sem precedentes, mas eles concentram operações frequentes de referências sob um único comando.

Pequeno, mas útil: agora git cmd --help-all Também funciona fora de um repositórioIsso facilita o acesso à ajuda global sem a necessidade de inicializar nada.

Manutenção e desempenho

O Git 2.52 introduz uma tarefa geometric Dentro de git maintenance Evita reempacotamentos completos sempre que possível e remove objetos inacessíveis com menos frequência. A tarefa inspeciona os pacotes para formar um progressão geométrica pelo número de objetos e compactar sem podar quando apropriado; se a operação terminar em um único pacote, execute um git gc completo para consolidação e poda.

Em termos de velocidade, existem avanços mensuráveis: git describe Agora utiliza uma fila de prioridade e ganha cerca de um 30% de desempenho; git remote rename Otimiza a renomeação de referências; git ls-files Isso mantém o índice disperso em mais casos; git log -L Evita certas diferenças em nível de árvore em mesclagens, acelerando a análise; e a biblioteca xdiff Incorpora diversas otimizações que As funções de comparação e mesclagem foram aprimoradas. no nível do arquivo.

Segurança e roteiro para o Git 3.0

A transição do SHA-1 para o SHA-256 continua. Os primeiros elementos do SHA-256 aparecem na versão 2.52. interoperabilidade entre algoritmosO objetivo é permitir que repositórios com hashes diferentes troquem alterações sem problemas. Ainda é um trabalho inicial, mas prepara o terreno para a próxima versão principal.

Outra mudança planejada para o Git 3.0 é que o branch padrão passará a se chamar "main". Isso já está presente desde a versão 2.52. pistas e mensagens de ajuda Para facilitar essa mudança, e qualquer pessoa que queira progredir pode aderir à bandeira. WITH_BREAKING_CHANGES para testar comportamentos planejados.

Inclui também, opcionalmente, código Rust protegido por WITH_RUSTque implementa a codificação/decodificação de inteiros de largura variável. Nesta versão, não é obrigatório e o Git 2.52 funciona sem o compilador Rust, mas Espera-se que o Git 3.0 o exija. e expandir os trechos reescritos.

Melhorias nos fluxos de trabalho e na usabilidade.

O uso de Filtros de Bloom de caminho alteradoUm filtro probabilístico que acelera as viagens quando estas são reduzidas por rotas. Agora, eles são usados ​​mesmo quando... especificação de caminho contém curingas parciais (por exemplo, foo/bar/*/baz) e em cenários com múltiplas rotas de interesse, beneficiando consultas como as de last-modified e vários comandos de histórico.

git sparse-checkout adicionar a ação clean Para resolver casos em que, ao alterar a definição das áreas de interesse, arquivos são excluídos da seleção. Com uma única etapa, você pode limpar a árvore de trabalho de elementos indesejados.

Outras adições úteis: nova variável commitGraph.changedPaths ativar por padrão --changed-paths en git commit-graph; opção stash.index para git stash pop/apply comporta-se como se tivesse sido invocado com --index; git diff-tree recebe --max-depth; git fast-import agora gerencia etiquetas assinadasE git repo info Aprenda a relatar o formato do objeto, além do suporte para -z.

Disponibilidade do Git 2.52

O código-fonte do Git 2.52 pode ser baixado do site oficial para compilá-lo localmente. Deve chegar nos próximos dias e semanas. repositórios das principais distribuições Na Europa, o GNU/Linux (Debian, Ubuntu, Fedora, openSUSE, Arch, etc.) já possui gerenciadores como Homebrew, MacPorts ou Chocolatey, com os tempos de empacotamento usuais.

Com esta versão, o Git fortalece suas operações diárias com comandos mais rápidos e úteisUma rotina de manutenção mais simplificada e os primeiros componentes da transição para o SHA-256 já estão disponíveis na branch "main" como padrão. Quem atualizar já pode testá-la. git last-modifiedO novo git repoa tarefa geométrica de git maintenance e os demais ajustes que, sem fazer barulho, suavizam a experiência tanto em repositórios pequenos quanto gigantescos.

Agente GitLab Duo
Artigo relacionado:
Plataforma de agentes GitLab Duo: a nova era da colaboração DevSecOps com agentes de IA