Git 2.36 versão de controle de origem

Após três meses de desenvolvimento, o sistema de controle de origem distribuído Git 2.36 foi lançado. Git é um dos sistemas de controle de versão mais populares, confiáveis ​​e de alto desempenho, fornecendo ferramentas flexíveis de desenvolvimento não linear baseadas em ramificação e fusão. Para garantir a integridade do histórico e a resistência a mudanças retroativas, é utilizado hash implícito de todo o histórico anterior em cada commit; também é possível certificar tags individuais e commits com assinaturas digitais dos desenvolvedores.

Em comparação com a versão anterior, foram adotadas 717 alterações na nova versão, preparada com a participação de 96 desenvolvedores, dos quais 26 participaram do desenvolvimento pela primeira vez. Principais inovações:

  • Os comandos “git log” e “git show” agora possuem uma opção “—remerge-diff” que permite mostrar as diferenças entre o resultado geral da mesclagem e os dados reais refletidos no commit após o processamento do comando “merge” , que permite avaliar claramente as alterações feitas como resultado da resolução de conflitos de fusão. O comando normal "git show" recua as diferentes resoluções de conflitos, dificultando a compreensão das alterações. Por exemplo, na captura de tela abaixo, a linha “+/-” sem recuo mostra a última resolução do conflito associado à renomeação de sha1 para oid no comentário na primeira ramificação, e “+/-” com recuo mostra o inicial resolução do conflito causado pelo aparecimento de um argumento adicional no segundo ramo da função dwim_ref().
    Git 2.36 versão de controle de origem

    Ao usar a opção "--remerge-diff", as diferenças entre as resoluções de conflitos não são separadas para cada ramificação pai, mas são mostradas as diferenças gerais entre o arquivo que possui conflitos de mesclagem e o arquivo que possui os conflitos resolvidos.

    Git 2.36 versão de controle de origem

  • Maior flexibilidade na configuração do comportamento para liberar caches de disco por meio de uma 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 git, como links ( .git /refs), reflog e arquivos de pacote.

    Usando a variável core.fsync, você pode especificar uma lista de estruturas internas do Git para as quais o fsync será chamado adicionalmente após uma operação de gravação. 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 de mesmo nome ou especificar somente gravação para usar o write-back do pagecache.

  • Para se proteger contra vulnerabilidades que manipulam a substituição de diretórios .git por outros usuários em seções compartilhadas, a verificação do proprietário do repositório foi fortalecida. A execução de qualquer comando git agora só é permitida em seus próprios diretórios ".git". Se o diretório com o repositório pertencer a outro usuário, um erro será exibido por padrão. Este comportamento pode ser desabilitado usando a configuração safe.directory.
  • O comando “git cat-file”, destinado à saída do conteúdo fonte dos objetos Git, foi complementado com a opção “--batch-command”, que complementa os anteriormente disponíveis “--batch” e “--batch-check ”comandos com a capacidade de selecionar de forma adaptativa o tipo de saída usando o“ conteúdo <objeto>" para exibir conteúdo ou "info <objeto>" para exibir informações sobre o objeto. Além disso, o comando "flush" é compatível para liberar o buffer de saída.
  • Ao comando “git ls-tree”, destinado a gerar uma lista do conteúdo de uma árvore de objetos, foi adicionada a opção “—oid-only” (“—object-only”), semelhante a “—name-only ”, exibindo apenas identificadores de objetos para simplificar a chamada de scripts. Também está implementada a opção “--format”, que permite definir seu próprio formato de saída combinando informações sobre modo, tipo, nome e tamanho.
  • O comando “git bisect run” implementa a detecção de não definir o sinalizador de arquivo executável para um script e neste caso exibir erros com códigos 126 ou 127 (anteriormente, se o script não pudesse ser executado, todas as revisões eram marcadas como tendo problemas) .
  • Adicionada uma opção --refetch ao comando "git fetch" para buscar todos os objetos sem informar a outra parte sobre o conteúdo já existente no sistema local. Este comportamento pode ser útil para recuperação de falhas quando a integridade dos dados locais é incerta.
  • Os comandos "git update-index", "git checkout-index", "git read-tree" e "git clean" agora suportam índices parciais (índice esparso) para melhorar o desempenho e economizar espaço em repositórios onde são realizadas operações parciais. (checkout esparso).
  • O comportamento do comando “git clone —filter=… —recurse-submodules” foi alterado, o que agora leva à clonagem parcial de submódulos (anteriormente, ao executar tais comandos, o filtro era aplicado apenas ao conteúdo principal, e os submódulos eram clonado completamente sem levar em conta o filtro).
  • O comando "git bundle" adicionou suporte para especificar filtros para colocar conteúdo seletivamente, semelhante às operações de clonagem parcial.
  • Adicionada opção "--recurse-submodules" ao comando "git branch" para percorrer submódulos recursivamente.
  • Userdiff oferece um novo manipulador para a linguagem Kotlin.

Fonte: opennet.ru

Adicionar um comentário