Lançamento do sistema de controle de versões distribuídas Git 2.24

Disponível lançamento do sistema de controle distribuído de textos-fonte Git 2.24.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.

Em comparação com a versão anterior, a nova versão inclui 544 alterações, preparadas com a participação de 78 desenvolvedores, dos quais 21 participaram pela primeira vez no desenvolvimento. Principais novidades:

  • Adicionada suporte a macros de configuração, que permitem alternar rapidamente entre diferentes conjuntos de configurações, sem entrar nos detalhes das opções específicas relacionadas. Com as macros, não é necessário lembrar quais configurações alteradas são necessárias para ativar determinada funcionalidade. Por exemplo, em caso de lentidão ao trabalhar com um repositório grande, pode ser necessário mudar para um novo mecanismo de indexação, ativar a compressão de prefixos de caminhos e habilitar o cache de arquivos não rastreados, definindo o parâmetro index.version para 4 e ativando core.untrackedCache. As macros permitem economizar tempo na busca pela solução correta na documentação e ativar imediatamente as configurações com otimizações para repositórios com um grande número de arquivos:

    git config feature.manyFiles true

  • O armazenamento de objetos na forma de grafo de commits (commit-graph) é ativado por padrão, onde a indexação usa uma estrutura em forma de grafo em vez de uma lista linear de hashes de objetos com referências a outros objetos. Se antes, para identificar as versões que continham uma específica correção, era necessário carregar cada objeto do disco para buscar referências, com o armazenamento em forma de grafo é possível determinar imediatamente todas as relações necessárias. A transição para o armazenamento em grafos de commits nos repositórios do núcleo do Linux e do Git permitiu quase dobrar o desempenho das operações com branches. Para ativar o novo método de armazenamento após a atualização para o Git 2.24, deve-se executar o comando "git gc".

    As alterações relacionadas ao commit-graph também incluem a padronização da exibição do indicador de progresso das operações nas comandos relacionados ao commit-graph (como 'git commit-graph write', 'git commit-graph verify' etc.). O indicador de progresso agora é exibido por padrão apenas no terminal (para alterar esse comportamento, utilize a opção '-[no-]progress'). Além disso, foi adicionado um novo parâmetro de configuração fetch.writeCommitGraph, que ativa a atualização automática do arquivo do gráfico de commits durante as operações 'git fetch' (todos os commits extraídos de repositórios externos serão adicionados ao commit-graph sem a necessidade de executar o auto-gc separadamente);

  • Foi adicionada uma nova command para reescrever o histórico de mudanças — 'git filter-repo', que é uma alternativa mais simples ao comando 'git filter-branch' para realizar operações no histórico do repositório (por exemplo, remover arquivos do repositório ou extrair o histórico de um diretório específico). Para aumentar a eficiência, em vez de fazer uma revisão por commit, as operações em 'git filter-repo' são realizadas em uma representação do histórico na forma de um fluxo contínuo.

    A filtragem do histórico é realizada com a opção '-path-{glob,regex}', que permite o uso de máscaras simples e expressões regulares. Também existem opções para realizar operações de 'buscar e substituir' ou limpar objetos binários que excedem um tamanho definido. Cada commit reescrito é atribuído a um novo identificador SHA-1 e todas as referências ao commit substituído são atualizadas de acordo com o novo identificador.

    Para gerar um resumo com estatísticas sobre o repositório (número de objetos por tipo, os maiores arquivos e diretórios, quais extensões ocupam mais espaço em disco etc.), a opção '-analyze' está disponível. Para expandir a funcionalidade, é possível adicionar manipuladores de callback personalizados em Python, através dos quais podem ser criados novos subcomandos e processados diferentes eventos (por exemplo, novos tipos de arquivos);

  • Adicionada a opção «—end-of-options», permitindo separar opções de nomes de links, que podem começar com o símbolo «-» e ser interpretados como opções («git log —end-of-options —super-dangerous-option»). No uso cotidiano, nomes semelhantes podem ser escapados como «git log ‘refs/heads/—super-dangerous-option'», mas scripts podem ter problemas para determinar o espaço de nomes. O separador comum » — » não é aplicável neste caso, pois já está sendo usado para separar nomes de links de arquivos (por exemplo, «git log —end-of-options —super-dangerous-option ^master — path/to/file»);
  • No «git rebase —rebase-merges» foram adicionadas as opções «—strategy» e «—strategy-option» para escolher a estratégia de mesclagem;
  • Adicionado um novo manipulador «.git/hooks/pre-merge-commit», chamado após a execução da mesclagem, mas antes de gravar o commit resultante;
  • O mecanismo de autocompletar comandos agora suporta a inclusão de variáveis de configuração vinculadas a configurações específicas de comandos.
    Por exemplo, ao precisar digitar «git -c core.autocrlf=false add path/to/my/file», mas não lembrando o nome exato da variável «core.autocrlf», pode-se pressionar Tab e obter uma sugestão.

Além disso, os desenvolvedores do Git adicionaram criaram um código de conduta do participante do projeto, que define os princípios básicos para a resolução de conflitos. O documento é baseado nas recomendações do «Contributor Covenant», aplicado em muitos projetos de código aberto, incluindo o núcleo do Linux, Eclipse, Freedesktop, GitLab, Ruby e Kubernetes. O documento estabelece igualdade de oportunidades para todos os participantes, independentemente de suas crenças, idade, gênero, preferências religiosas, nível educacional, status social e nacionalidade. A comunidade incentiva uma forma amigável de comunicação, compreensão, empatia com os problemas de outros participantes, aceitação de críticas construtivas e a busca das melhores soluções para toda a comunidade. Trollagem, comunicação agressiva, tentativas de humilhação, assédio, violação da privacidade, divulgação de informações pessoais, bem como outras ações que possam ser consideradas inadequadas em um ambiente profissional, não são permitidas.

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