Lançamento do sistema de gerenciamento de versões distribuído Git 2.31

Está disponível o lançamento do sistema de controle de versões distribuído Git 2.31. 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 de branches. Para garantir a integridade do histórico e a resistência a alterações retroativas, o Git utiliza um hashing implícito de todo o histórico anterior em cada commit, sendo possível também autenticar digitalmente as assinaturas dos desenvolvedores em tags e commits individuais.

Comparado com a versão anterior, a nova versão inclui 679 alterações, preparadas com a participação de 85 desenvolvedores, dos quais 23 participaram do desenvolvimento pela primeira vez. Principais novidades:

  • Foi adicionada a nova interface de linha de comando "git maintenance", que permite executar tarefas periódicas em sistemas que não suportam cron. Por exemplo, com o novo comando, é possível organizar a execução periódica do processo de empacotamento do repositório, para não esperar a conclusão do bloqueio do repositório durante a execução automática do empacotamento enquanto várias outras comandos são executados. O "git maintenance" permite realizar otimizações e operações para manter a estrutura ideal do repositório em segundo plano, sem bloquear a sessão interativa – a cada hora, é realizada uma operação de pré-carregamento de novos objetos do repositório remoto e atualização do arquivo com o gráfico de commits, e todas as noites o processo de empacotamento do repositório é iniciado.
  • Foi adicionada a funcionalidade de gerenciamento do índice reverso (revindex) no disco para arquivos pack. Lembrando que o Git armazena todos os dados na forma de objetos, que são guardados em arquivos separados. Para aumentar a eficiência na manipulação do repositório, os objetos são colocados adicionalmente em arquivos pack, onde as informações são apresentadas na forma de um fluxo de objetos sequenciais (um formato semelhante é usado na transmissão de objetos com os comandos git fetch e git push). Para cada arquivo pack, um arquivo de índice (.idx) é criado para permitir, através do identificador do objeto, determinar rapidamente o deslocamento no arquivo pack onde o objeto está armazenado. O índice reverso proposto no Git 2.31 (.rev) visa otimizar o processo de identificação do objeto com base nas informações de localização do objeto no arquivo pack.

    Anteriormente, essa transformação era realizada em tempo real durante a análise do pack-file e armazenada apenas na memória, o que não permitia reutilizar tais índices e obrigava a gerar o índice a cada vez. A operação de construção do índice consiste em criar um array de pares "objeto-posicao" e ordená-lo por posição, o que pode levar muito tempo para grandes pack-files.

    Por exemplo, a operação de saída do conteúdo dos objetos, na qual é utilizado um índice direto, foi 62 vezes mais rápida do que a operação de exibição do tamanho dos objetos, para a qual os dados de relação posição-objeto não eram indexados. Após o uso do índice reverso, as operações mencionadas passaram a levar aproximadamente o mesmo tempo. Os índices reversos também permitem acelerar as operações de envio de objetos durante a execução dos comandos fetch e push, graças à transmissão direta de dados já prontos do disco. Por padrão, os índices reversos não são criados; a sua geração exige a ativação da configuração "git config pack.writeReverseIndex true" seguida pelo empacotamento do repositório com o comando "git repack -Ad".

  • Foram adicionadas otimizações de desempenho com base na nova formatação do arquivo commit-graph, utilizada para otimizar o acesso às informações sobre commits, novos dados sobre o número de geração dos commits que podem ser utilizados para acelerar operações adicionais com commits.
  • Foram aprimoradas as opções para redefinir o nome do branch principal, aplicado por padrão em novos repositórios (configuração init.defaultBranch). Ao acessar repositórios externos, o git tenta extrair o branch indicado pelo HEAD, ou seja, se o externo servidor usar por padrão o branch "main", a operação "git clone" tentará extrair localmente o "main". No Git 2.31, o suporte para tal extração agora é implementado também para repositórios vazios. Por exemplo, ao clonar localmente um novo repositório antes de adicionar os primeiros patches, a cópia local agora conterá o nome do branch principal definido no externo. servidor default.
  • Foi adicionada à command "git rev-list" a opção "—disk-usage", que permite exibir resumos sobre o tamanho dos objetos.
  • Na expectativa da iminente troca do backend para a execução de fusões, a determinação de renomeações foi significativamente otimizada.
  • O suporte para a biblioteca de expressões regulares PCRE1 foi interrompido.
  • Foi fornecida a capacidade de forçar a proibição do uso de links encurtados, funcionando independentemente do algoritmo de hash. A proibição é ativada ao atribuir o valor "no" ao parâmetro core.abbrev.
  • Foi adicionada à equipe "git rev-parse" a opção "—path-format=(absolute|relative)" para especificar explicitamente a saída de caminhos relativos ou absolutos.
  • Nos scripts para autocompletar entradas no Bash, a adição de regras de complemento para subcomandos personalizados do "git" foi simplificada.
  • Foi adicionada à equipe "git bundle" a opção "—stdin" para ler referências a partir do fluxo de entrada padrão.
  • Foi adicionada à equipe "git log" uma nova opção "—diff-merges=".
  • Foi adicionada à equipe "git ls-files" a opção "—deduplicatecan" para eliminar duplicatas na saída.
  • Novas máscaras foram adicionadas para excluir um intervalo de commits — "^!" e "^-".
  • Foram adicionadas à equipe "git range-diff" as opções "—left-only" e "—right-only" para mostrar apenas um dos lados do intervalo comparado.
  • Foram adicionadas às equipes "git diff" e "git log" as opções "—skip-to=" e "—rotate-to=" para pular ou mover para o final dos caminhos iniciais.
  • Foi adicionada à equipe "git difftool" a opção "—skip-to=" para retomar uma sessão interrompida a partir de um caminho específico.
  • O Código de Conduta, que define os princípios básicos para a resolução de conflitos entre desenvolvedores, foi atualizado para a versão 2.0 (anteriormente era utilizada a versão 1.4).

    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