Lançamento do sistema de controle de versões Git 2.36

Após três meses de desenvolvimento, foi lançada a versão 2.36 do sistema de controle de versões distribuído Git. O Git é um dos sistemas de controle de versões mais populares, confiáveis e de alto desempenho, oferecendo ferramentas flexíveis para desenvolvimento não linear baseadas em ramificações e fusões. Para garantir a integridade do histórico e a resistência a alterações retroativas, são utilizados hashes implícitos de todo o histórico anterior em cada commit, além de serem possíveis certificações através de assinaturas digitais de desenvolvedores para tags e commits específicos.

Comparado à versão anterior, a nova versão incorporou 717 alterações, preparadas com a participação de 96 desenvolvedores, dos quais 26 participaram do desenvolvimento pela primeira vez. As principais inovações incluem:

  • Os comandos 'git log' e 'git show' ganharam a opção '--remerge-diff', que permite mostrar as diferenças entre o resultado total da fusão e os dados reais refletidos no commit após a execução do comando 'merge', o que possibilita uma avaliação visual das mudanças realizadas durante a resolução de conflitos. O comando 'git show' tradicional separa diferentes resoluções de conflitos com um recuo, o que dificulta a compreensão das mudanças. Por exemplo, na captura de tela abaixo, as linhas '+/-' sem recuo mostram a última resolução de conflito relacionada à renomeação do primeiro branch sha1 para oid no comentário, enquanto '+/-' com recuo indicam a resolução inicial do conflito, provocada pelo surgimento de um argumento extra na função dwim_ref() no segundo branch.
    Lançamento do sistema de controle de versões Git 2.36

    Ao utilizar a opção '--remerge-diff', as diferenças entre as resoluções dos conflitos não são divididas para cada branch pai, mas são apresentadas como diferenças comuns entre o arquivo que contém conflitos de fusão e o arquivo onde os conflitos foram resolvidos.

    Lançamento do sistema de controle de versões Git 2.36
  • A flexibilidade na configuração do comportamento de redefinição de caches de disco foi aumentada através da chamada da função fsync(). O parâmetro anteriormente disponível core.fsyncObjectFiles foi dividido em duas variáveis de configuração core.fsync e core.fsyncMethod, permitindo a aplicação do fsync não apenas a arquivos de objetos (.git/objects), mas também a outras estruturas do git, como referências (.git/refs), reflog e arquivos de pacotes.

    Através da variável core.fsync, é possível especificar uma lista de estruturas internas do Git, para as quais será chamada a operação fsync após a operação de gravação. A variável core.fsyncMethod permite escolher o método para descarregar o cache, por exemplo, você pode optar por fsync para aplicar a chamada de sistema homônima ou indicar writeout-only para aplicar a gravação adiada (pagecache writeback).

  • 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. A execução de qualquer comando git agora é permitida apenas em seus próprios diretórios '.git'. Se o diretório do repositório pertencer a outro usuário, um erro será exibido por padrão. O comportamento especificado pode ser desativado através da configuração safe.directory.
  • O comando 'git cat-file', destinado à saída do conteúdo original dos objetos Git, adicionou a opção '--batch-command', complementando os comandos anteriormente disponíveis '--batch' e '--batch-check' com a capacidade de selecionar adaptativamente o tipo de saída especificando 'contents ' para exibir o conteúdo ou 'info ' para exibir informações sobre o objeto. Além disso, o comando 'flush' foi suportado para descarregar o buffer de saída.
  • No comando 'git ls-tree', destinado a formar uma lista de conteúdos da árvore de objetos, foi adicionada a opção '--oid-only' ('--object-only'), semelhante a '--name-only', que exibe apenas os identificadores dos objetos para simplificar chamadas a partir de scripts. Também foi implementada a opção '--format', que permite definir seu próprio formato de saída, combinando informações sobre modo, tipo, nome e tamanho.
  • No comando 'git bisect run', foi implementada a definição de não apresentação de um sinalizador de arquivo executável para o script e a saída de erros com códigos 126 ou 127 nesse caso (anteriormente, se o script não pudesse ser executado, todas as revisões eram marcadas como problemáticas).
  • No comando 'git fetch', foi adicionada a opção '--refetch' para extrair todos os objetos sem informar a outra parte sobre o conteúdo já presente no sistema local. Esse comportamento pode ser útil para restaurar o estado após falhas, quando não há certeza sobre a integridade dos dados locais.
  • Nas equipes «git update-index», «git checkout-index», «git read-tree» e «git clean» foi adicionada a suporte a índices esparsos (sparse index), permitindo melhorar o desempenho e economizar espaço em repositórios onde operações de clonagem parcial (sparse-checkout) são realizadas.
  • O comportamento do comando «git clone —filter=… —recurse-submodules» foi alterado, agora resultando em clonagem parcial de submódulos (anteriormente, ao executar esses comandos, o filtro era aplicado apenas ao conteúdo principal, e os submódulos eram clonados completamente sem considerar o filtro).
  • No comando «git bundle», foi adicionada a suporte para especificar filtros para a inclusão seletiva de conteúdo, análoga às operações de clonagem parcial.
  • No comando «git branch», foi adicionada a opção «—recurse-submodules» para percorrer submódulos de forma recursiva.
  • Um novo manipulador para a linguagem Kotlin foi proposto no userdiff.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster