Lançamento do sistema de controle de versão distribuído Git 2.26

Disponível lançamento do sistema de controle distribuído de textos-fonte Git 2.26.0. O Git é um dos sistemas de controle de versão mais populares, confiáveis e de alto desempenho, oferecendo ferramentas flexíveis para desenvolvimento não linear, baseadas em ramificações e fusões de ramos. Para garantir a integridade do histórico e resistência a alterações 'retroativas', utiliza-se a hash implícita de todo o histórico anterior em cada commit, sendo possível também a autenticação com assinaturas digitais de desenvolvedores em tags e commits específicos.

Comparado à versão anterior, a nova versão inclui 504 alterações, desenvolvidas por 64 desenvolvedores, dos quais 12 participaram pela primeira vez. Principais novidades:

  • Foi realizada a transição padrão para a segunda versão do protocolo de comunicação Git, que é utilizado ao conectar remotamente o cliente ao servidor Git. A segunda versão do protocolo se destaca por permitir a filtragem de branches e tags do lado do servidor, retornando ao cliente uma lista reduzida de referências. Anteriormente, ao executar qualquer comando de fetch, o cliente sempre recebia a lista completa de referências em todo o repositório, mesmo quando apenas uma branch estava sendo atualizada ou quando verificava a validade de sua cópia do repositório. Outra inovação significativa é a capacidade de adicionar novas funcionalidades ao protocolo à medida que novas funcionalidades aparecem nas ferramentas. O código do cliente permanece compatível com o antigo protocolo e pode continuar a trabalhar com servidores novos e antigos, revertendo automaticamente para a primeira versão, caso o servidor não suporte a segunda.
  • O comando ‘git config’ ganhou a opção ‘—show-scope’ para facilitar a identificação de onde determinadas configurações estão definidas. O Git permite definir configurações em diferentes locais: no repositório (.git/info/config), no diretório do usuário (~/.gitconfig), no arquivo de configuração do sistema (/etc/gitconfig) e através de opções de linha de comando e variáveis de ambiente. Ao executar ‘git config’, muitas vezes é difícil entender exatamente onde a configuração desejada foi definida. Para resolver essa questão, havia a opção ‘—show-origin’, mas ela apenas mostra o caminho do arquivo onde a configuração está definida, o que é útil se você pretende editar o arquivo, mas não ajuda se você precisa alterar o valor através de ‘git config’ usando as opções ‘—system’, ‘—global’ ou ‘—local’. A nova opção ‘—show-scope’ exibe o contexto em que as variáveis foram definidas e pode ser utilizada juntamente com ‘—show-origin’:

    $ git —list —show-scope —show-origin
    global file:/home/user/.gitconfig diff.interhunkcontext=1
    global file:/home/user/.gitconfig push.default=current
    […]
    local file:.git/config branch.master.remote=origin
    local file:.git/config branch.master.merge=refs/heads/master

    $ git config —show-scope —get-regexp ‘diff.*’
    global diff.statgraphwidth 35
    local diff.colormoved plain

    $ git config —global —unset diff.statgraphwidth

  • Nas configurações de vinculação credenciais É permitido o uso de máscaras em URLs. Qualquer configuração HTTP e credenciais no Git podem ser definidas tanto para todas as conexões (http.extraHeader, credential.helper) quanto para conexões associadas a URLs (credential.https://example.com.helper, credential.https://example.com.helper). Até agora, o uso de máscaras, como *.example.com, era permitido apenas para configurações HTTP, mas não era suportado para a associação de credenciais. No Git 2.26, essas diferenças foram eliminadas e, por exemplo, agora é possível associar um nome de usuário a todos os subdomínios:

    [credential "https://*.example.com"]

    username = ttaylorr

  • Continua a expansão do suporte experimental a clonagens parciais (partial clones), permitindo transferir apenas uma parte dos dados e trabalhar com uma cópia incompleta do repositório. A nova versão adicionou o novo comando "git sparse-checkout add", que permite adicionar diretórios individuais para aplicar a operação de "checkout" apenas a parte da árvore de trabalho, em vez de listar todos esses diretórios de uma vez com o comando "git sparse-checkout set" (é possível adicionar um diretório de cada vez, sem ter que redigir toda a lista novamente).
    Por exemplo, para clonar o repositório git/git sem transferir blobs, restringindo a verificação apenas ao diretório raiz da cópia de trabalho e fazendo uma marcação separada para extrair os diretórios "t" e "Documentation", pode-se especificar:

    $ git clone --filter=blob:none --sparse git@github.com:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout add t
    ….
    $ git sparse-checkout add Documentation
    ….
    $ git sparse-checkout list
    Documentação
    t

  • A performance do comando "git grep", utilizado para buscas tanto no conteúdo atual do repositório quanto nas revisões históricas, foi significativamente aumentada. Para acelerar as buscas, era permitido escanear o conteúdo da árvore de trabalho usando múltiplas threads ("git grep --threads"), mas as buscas nas revisões históricas eram monothread. Agora, essa limitação foi eliminada por meio da implementação da capacidade de paralelizar operações de leitura do repositório de objetos. Por padrão, o número de threads é definido igual ao número de núcleos da CPU, o que na maioria dos casos agora não requer a definição explícita da opção "--threads".
  • Adicionada a funcionalidade de autocompletar a entrada de subcomandos, caminhos, referências e outros argumentos do comando "git worktree", permitindo trabalhar com várias cópias de trabalho do repositório.
  • Suporte foi adicionado a cores brilhantes, para as quais existem sequências de escape ANSI. Por exemplo, nas configurações de cores de destaque "git config --color" ou "git diff --color-moved" através da opção "--format" para azul brilhante pode-se especificar "%C(brightblue)".
  • Uma nova versão do script foi adicionada fsmonitor-watchman, que fornece integração com o mecanismo Facebook Watchman para acelerar o rastreamento de alterações em arquivos e a adição de novos arquivos. Após a atualização do git, é necessário substituir hook no repositório.
  • Otimizações foram adicionadas para acelerar operações de clonagem parcial, relacionadas ao uso de mapas de bits
    (bitmap machinery) para evitar a varredura completa de todos os objetos durante a filtragem de saída. A verificação de blobs (--filter=blob:none e --filter=blob:limit=n) durante a clonagem parcial agora é realizada
    significativamente mais rápido. O GitHub anunciou a aplicação de patches com essas otimizações e suporte experimental para clonagem parcial.
  • O comando "git rebase" foi transferido para um novo backend, utilizando por padrão o mecanismo 'merge' (anteriormente usado para "rebase -i") em vez de 'patch+apply'. Em alguns aspectos, os backends diferem, por exemplo, após a continuação da operação após resolver um conflito (git rebase --continue), o novo backend oferece editar a mensagem do commit, enquanto o antigo apenas utilizava a antiga mensagem. Para retornar ao comportamento anterior, pode-se usar a opção "--apply" ou definir a variável de configuração 'rebase.backend' como 'apply'.
  • Um exemplo do manipulador de parâmetros de autenticação, especificados através do .netrc, foi reformulado para ser utilizável imediatamente.
  • Foi adicionada a configuração gpg.minTrustLevel para determinar o nível mínimo de confiança para vários elementos que realizam verificação de assinatura digital.
  • As opções "--pathspec-from-file" foram adicionadas ao "git rm" e ao "git stash".
  • O aprimoramento dos conjuntos de testes continua como parte da preparação para a transição do algoritmo de hash SHA-1 para SHA-2.

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