O projeto de código aberto Git lançou recentemente o Git 2.46 com recursos e correções de bugs de mais de 96 colaboradores, 31 deles novos. Aqui estão alguns dos destaques desta versão:
Bitmaps de pseudo-Merge
Uma das características mais notáveis do Git 2.46 é a introdução de bitmaps de pseudo-merge. Essa funcionalidade é uma grande inovação que otimiza a forma como o Git realiza buscas e determina quais commits (e árvores, blobs, etc.) existem entre dois conjuntos de dados – um conjunto de commits que o cliente quer, mas não tem, e outro conjunto que o cliente já tem e não quer.
Para entender melhor, vamos considerar um exemplo. Quando o Git precisa atender a uma solicitação de busca, ele começa com um conjunto de commits que o cliente quer, mas não tem, e outro conjunto que o cliente já tem e não quer. Dado essas informações, o Git precisa determinar quais commits (e árvores, blobs, etc.) existem entre os dois conjuntos para atender à solicitação de busca do cliente.
Abordagem padrão
Na abordagem tradicional, o Git percorre a história dos commits, começando com cada commit que o cliente ‘want’ (deseja), mas ainda não possui. Esses commits são marcados como ‘interesting’ (interessantes). Em seguida, o Git examina os commits pais desses commits e assim por diante, até que não haja mais commits ‘interesting’ para examinar. Durante essa travessia, quando o Git encontra um commit, ele verifica se esse commit é alcançável a partir de qualquer um dos commits que o cliente ‘have’ (possui). Se não for, o Git continua a travessia a partir desse commit.
Caso contrário, ele interrompe a travessia a partir desse commit. Esse processo de travessia determina o conjunto de objetos que precisam ser enviados para atender à solicitação de busca do cliente. No entanto, essa travessia pode ser lenta, dependendo de fatores como o tamanho dos conjuntos de commits que o cliente ‘want’ e ‘have’, o número de commits entre esses dois conjuntos, a profundidade das árvores de commits intermediárias, entre outros.
Aqui é onde os bitmaps de pseudo-merge entram em jogo. Para otimizar esse cálculo, o Git usa bitmaps de acessibilidade para determinar mais rapidamente o conjunto de objetos a serem enviados. Os bitmaps armazenam o conjunto de objetos alcançáveis a partir de algum conjunto de commits, codificando esse conjunto como um conjunto de bits onde cada bit identifica exclusivamente um único objeto.
Essa nova funcionalidade permite que o Git determine rapidamente quais commits são relevantes para determinadas operações, sem ter que pesquisar cada commit individualmente. Isso resulta em uma melhoria significativa na velocidade e eficiência das operações de busca do Git, tornando o Git 2.46 uma atualização valiosa para os usuários do Git.
Helpers de credenciais mais eficazes
Os helpers de credenciais são uma parte fundamental do Git, pois eles gerenciam a autenticação necessária para se conectar a repositórios remotos. No Git 2.46, esses helpers de credenciais foram aprimorados para suportar esquemas de autenticação além do par de nome de usuário e senha, como Bearer e NTLM.
Os helpers de credenciais funcionam como uma interface entre o Git e o sistema de gerenciamento de credenciais do sistema operacional. Eles armazenam e recuperam credenciais (como nomes de usuário e senhas), o que permite que os usuários se autentiquem em repositórios remotos sem ter que inserir suas credenciais toda vez que realizam uma operação que requer autenticação.
A introdução do suporte para esquemas de autenticação Bearer e NTLM é uma melhoria significativa. O esquema Bearer é comumente usado com tokens de acesso OAuth, que são uma forma popular de autenticação para APIs da web. Por outro lado, o NTLM (NT LAN Manager) é um protocolo de autenticação proprietário da Microsoft, usado principalmente em redes de domínio do Windows.
Essa expansão na capacidade dos helpers de credenciais significa que os usuários do Git agora têm mais flexibilidade e opções quando se trata de autenticação. Isso pode ser particularmente útil para organizações que usam esquemas de autenticação específicos devido a requisitos de segurança ou infraestrutura.
Além disso, essa melhoria também pode simplificar o fluxo de trabalho dos usuários. Por exemplo, em vez de ter que gerar e gerenciar manualmente tokens de acesso para autenticação, os usuários podem configurar o Git para usar um esquema de autenticação suportado pelo helper de credenciais, que pode gerenciar automaticamente a geração, armazenamento e renovação de tokens.
Novo comando git config
O comando git config
é uma ferramenta essencial no Git, usada para definir e ajustar as variáveis de configuração que controlam todos os aspectos de como o Git aparece e opera. No Git 2.46, houve uma mudança significativa na forma como esse comando é usado.
Anteriormente, o comando git config
usava opções de modo de operação. Por exemplo, para obter uma configuração, você usaria git config --get
. No entanto, no Git 2.46, o comando git config
agora tem subcomandos em vez de opções de modo de operação. Isso significa que, em vez de usar git config --get
, agora você pode usar git config get
.
Essa mudança pode parecer pequena, mas, na verdade, ela torna o comando git config
mais intuitivo e fácil de usar. Agora, o comando se alinha mais com a estrutura de comando-subcomando usada por muitos outros comandos do Git, o que pode tornar a experiência do usuário mais consistente ao trabalhar com o Git.
Além disso, essa mudança também pode facilitar a automação e a criação de scripts com o Git. Como os subcomandos são mais previsíveis e consistentes em sua formatação do que as opções de modo de operação, eles podem ser mais facilmente usados em scripts e outras ferramentas de automação.
Em resumo, a introdução de subcomandos no comando git config
no Git 2.46 é uma melhoria que aumenta a usabilidade e a consistência do Git, tornando-o ainda mais poderoso e fácil de usar para desenvolvedores e equipes de todos os níveis de habilidade.
Suporte ao Windows 7 e 8 encerrado
O Git 2.46 é a última versão a oferecer suporte ao Windows 7 e ao Windows 8.
Conferência Git Merge
A conferência para usuários e desenvolvedores do Git, Git Merge, está de volta este ano em 19 e 20 de setembro, em Berlim. O GitHub e o GitButler estão co-hospedando o evento.