Após três meses de desenvolvimento, foi lançada a nova versão do sistema de controle de código fonte distribuído Git 2.36, um dos sistemas de controle de versão mais populares, confiáveis e de alto desempenho. Ele fornece ferramentas de desenvolvimento não lineares flexíveis baseadas em forks e fusões.
Para garantir a integridade do histórico e a resistência a mudanças, o hash implícito de todo o histórico anterior é usado em cada confirmação. Também é possível verificar as assinaturas digitais dos desenvolvedores de etiquetas e confirmações individuais. Veja a seguir outras características da nova versão do Git 2.36.
Principais novos recursos do Git 2.36
Em relação à versão anterior, foram aceitas 717 alterações na nova versão, elaborada com a participação de 96 desenvolvedores, dos quais 26 participaram do desenvolvimento pela primeira vez.
Principais inovações:
A opção “–remerge-diff” foi adicionada aos comandos “git log” e “git show” para mostrar as diferenças entre o resultado geral do merge e os dados reais refletidos no commit após o processamento do comando “merge”, que permite avaliar visualmente as alterações feitas como resultado da resolução de conflitos de mesclagem. O comando usual “git show” separa as diferentes resoluções de conflito com recuo, dificultando a compreensão das alterações.
Ao usar a opção “–remerge-diff”, as diferenças entre as resoluções de conflito não são separadas para cada ramificação pai, mas as diferenças gerais entre um arquivo que tem conflitos de mesclagem e um arquivo que resolveu conflitos são exibidas.
Outra mudança que se destaca é a maior flexibilidade na personalização do comportamento de esvaziamento de caches de disco por meio da chamada à função fsync().
O parâmetro core.fsyncObjectFiles disponível anteriormente foi dividido em duas variáveis de configuração core.fsync e core.fsyncMethod , fornecendo a capacidade de aplicar fsync não apenas a arquivos de objeto (.git/objects), mas também a outras estruturas de banco de dados. git como referências ( .git /refs), reflog e arquivos de pacote.
Lançado Git 2.36 com muitos recursos e novidades
Por meio da variável core.fsync, você pode especificar uma lista de estruturas internas do Git , após a operação de gravação, para as quais o fsync será chamado adicionalmente. A variável core.fsyncMethod permite selecionar um método para liberar o cache, por exemplo, você pode selecionar fsync para usar a chamada do sistema com o mesmo nome ou especificar write somente para usar gravação lenta pendente (gravação lenta do cache de página).
Para proteger contra vulnerabilidades que manipulam a substituição de diretórios .git por outros usuários em partições compartilhadas, a verificação do proprietário do repositório foi reforçada. Agora só é permitido executar qualquer comando git em seus próprios diretórios “.git”. Se o diretório do repositório pertencer a outro usuário, um erro será gerado por padrão. Esse comportamento pode ser desabilitado usando a configuração de diretório seguro.
Nota-se também que a opção “–batch-command” foi adicionada ao comando “git cat-file”, que tem como objetivo gerar o conteúdo original dos objetos Git, complementando o “–batch” e o “–batch-check” anteriormente disponíveis com a capacidade de selecionar de forma adaptativa o tipo de saída via “content <object>” para exibir conteúdo ou “info <object>” para exibir informações sobre o objeto. Além disso, há suporte para um comando “flush” para liberar o buffer de saída.
Por outro lado, vale ressaltar que a opção “–oid-only” (“–object-only”) foi adicionada ao comando “git ls-tree”, que é projetado para enumerar o conteúdo de uma árvore de objetos que , por analogia com “–name -only”, exibe apenas identificadores de objeto para simplificar as chamadas de scripts. A opção “–format” também é implementada, o que permite definir seu próprio formato de saída combinando informações de modo, tipo, nome e tamanho.
Das outras mudanças que se destacam nesta nova versão:
- No comando “git bisect run” é implementada a definição de não definir o sinal de um arquivo executável para o script e gerar erros com os códigos 126 ou 127 neste caso (anteriormente, se o script não pudesse ser executado, todas as revisões eram marcado como tendo problemas).
- Adicionada opção “–refetch” ao comando “git fetch” para buscar todos os objetos sem informar o outro lado do conteúdo que já está no sistema local. Esse comportamento pode ser útil para restaurar o estado após falhas quando houver incerteza sobre a integridade dos dados locais.
- Os comandos “git update-index”, “git checkout-index”, “git read-tree” e “git clean” agora suportam indexação parcial (índice esparso) para melhorar o desempenho e economizar espaço em repositórios que realizam operações parciais. (pagamento ruim).
- Alterado o comportamento do comando “git clone –filter=… –recurse-submodules”, que agora leva à clonagem parcial dos submódulos (anteriormente, ao executar tais comandos, o filtro era aplicado apenas ao conteúdo principal e os submódulos eram completamente clonado sem levar em conta o filtro).
- Adicionado suporte para especificar filtros para posicionamento seletivo de conteúdo no comando “git bundle”, semelhante às operações de clone parcial.
- Adicionada a opção “–recurse-submodules” ao comando “git branch” para percorrer os submódulos recursivamente.
O Userdiff propôs um novo driver para a linguagem Kotlin.
Por fim, se você estiver interessado em saber mais sobre esta nova versão do Git 2.36, pode consultar os detalhes no link a seguir.
Via DesdeLinux