Lançamento do sistema de controle de origem distribuído Git 2.26

Disponível lançamento de um sistema de controle de origem distribuído Git 2.26.0. 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, a nova versão incluiu 504 alterações, preparadas com a participação de 64 desenvolvedores, dos quais 12 participaram do desenvolvimento pela primeira vez. O principal inovações:

  • O padrão foi alterado para segunda versão Protocolo de comunicação Git, usado quando um cliente se conecta remotamente a um servidor Git. A segunda versão do protocolo se destaca por fornecer a capacidade de filtrar ramificações e tags no lado do servidor, retornando uma lista abreviada de links para o cliente. Anteriormente, qualquer comando pull sempre enviava ao cliente a lista completa de referências de todo o repositório, mesmo quando o cliente estava atualizando apenas uma ramificação ou verificando se sua cópia do repositório estava atualizada. Outra inovação notável é a capacidade de adicionar novos recursos ao protocolo à medida que novas funcionalidades ficam disponíveis no kit de ferramentas. O código do cliente permanece compatível com o protocolo antigo e pode continuar a funcionar com servidores novos e antigos, voltando automaticamente para a primeira versão se o servidor não suportar a segunda.
  • A opção “-show-scope” foi adicionada ao comando “git config”, facilitando a identificação do local onde determinadas configurações são definidas. O Git permite que você defina configurações em diferentes locais: no repositório (.git/info/config), no diretório do usuário (~/.gitconfig), no arquivo de configuração de todo o sistema (/etc/gitconfig) e por meio do comando opções de linha e variáveis ​​de ambiente. Ao executar “git config” é bastante difícil entender onde exatamente a configuração desejada está definida. Para resolver este problema, a opção “--show-origin” estava disponível, mas mostra apenas o caminho do arquivo no qual 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 de definição da variável e pode ser usada em conjunto com -show-origin:

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

    $ git config --show-scope --get-regexp 'diff.*'
    diferença global.statgraphwidth 35
    diferença local.colormoved simples

    $ git config --global --unset diff.statgraphwidth

  • Nas configurações de vinculação credenciais É permitido o uso de máscaras em URLs. Quaisquer configurações e credenciais HTTP no Git podem ser definidas para todas as conexões (http.extraHeader, credential.helper) e para conexões baseadas em URL (credential.https://example.com.helper, credential.https: //example. com.helper). Até agora, caracteres curinga como *.example.com eram permitidos apenas para configurações HTTP, mas não eram suportados para vinculação de credenciais. No Git 2.26, essas diferenças foram eliminadas e, por exemplo, para vincular um nome de usuário a todos os subdomínios agora você pode especificar:

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

    nome de usuário = ttaylorr

  • A expansão do suporte experimental para clonagem parcial (clones parciais) continua, permitindo transferir apenas parte dos dados e trabalhar com uma cópia incompleta do repositório. A nova versão adiciona um novo comando "git sparse-checkout add", que permite adicionar diretórios individuais para aplicar a operação "checkout" a apenas parte da árvore de trabalho, em vez de listar todos esses diretórios de uma vez através do comando "git sparse-checkout set" (você pode adicionar um por um diretório, sem especificar novamente a lista inteira a cada vez).
    Por exemplo, para clonar um repositório git/git sem submeter blobs, limitando o checkout apenas ao diretório raiz da cópia de trabalho e marcando separadamente o checkout para os diretórios "t" e "Documentação", você pode especificar:

    $ git clone --filter=blob:none --sparse [email protegido]:git/git.git

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

    $ git checkout esparso adicionar t
    ....
    $ git sparse-checkout add Documentação
    ....
    $ git lista de verificação esparsa
    Documentação
    t

  • O desempenho do comando “git grep”, usado para pesquisar tanto o conteúdo atual do repositório quanto as revisões históricas, foi significativamente melhorado. Para agilizar a busca, era possível escanear o conteúdo da árvore de trabalho usando múltiplos threads (“git grep –threads”), mas a busca nas revisões históricas era de thread único. Agora, essa limitação foi removida com a implementação da capacidade de paralelizar as operações de leitura do armazenamento de objetos. Por padrão, o número de threads é igual ao número de núcleos da CPU, o que na maioria dos casos agora não requer a configuração explícita da opção “-threads”.
  • Adicionado suporte para preenchimento automático de entrada de subcomandos, caminhos, links e outros argumentos do comando “git worktree”, que permite trabalhar com diversas cópias de trabalho do repositório.
  • Adicionado suporte para cores brilhantes que possuem sequências de escape ANSI. Por exemplo, nas configurações para cores de destaque “git config –color” ou “git diff –color-moved” você pode especificar “%C(brightblue)” através da opção “--format” para azul brilhante.
  • Adicionada nova versão do script vigia-fsmonitor, proporcionando integração com o mecanismo Vigilante do Facebook para acelerar o rastreamento de alterações de arquivos e o aparecimento de novos arquivos. Depois de atualizar o git é necessário substituir gancho no repositório.
  • Adicionadas otimizações para acelerar clones parciais ao usar bitmaps
    (máquinas de bitmap) para evitar uma pesquisa completa de todos os objetos ao filtrar a 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 patches com essas otimizações e suporte experimental para clonagem parcial.

  • O comando "git rebase" foi movido para um backend diferente, usando o mecanismo padrão 'merge' (anteriormente usado para "rebase -i") em vez de 'patch+apply'. Os backends diferem em alguns pequenos aspectos, por exemplo, depois de continuar uma operação após resolver um conflito (git rebase --continue), o novo backend se oferece para editar a mensagem de commit, enquanto o antigo simplesmente usava a mensagem antiga. Para reverter ao comportamento antigo, você pode usar a opção "--apply" ou definir a variável de configuração 'rebase.backend' como 'apply'.
  • Um exemplo de manipulador para parâmetros de autenticação especificados via .netrc foi reduzido a um formato adequado para uso imediato.
  • Adicionada a configuração gpg.minTrustLevel para definir o nível mínimo de confiança para vários elementos que executam verificação de assinatura digital.
  • Adicionada opção "--pathspec-from-file" a "git rm" e "git stash".
  • A melhoria dos conjuntos de testes continuou em preparação para a transição para o algoritmo de hash SHA-2 em vez de SHA-1.

Fonte: opennet.ru

Adicionar um comentário