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

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

  • Adicionado suporte para macros de configuração, por meio das quais você pode alternar rapidamente entre diferentes conjuntos de configurações sem entrar em detalhes sobre as opções específicas associadas a eles. Com a ajuda de macros, não há necessidade de lembrar quais configurações precisam ser alteradas para ativar esta ou aquela funcionalidade. Por exemplo, se um repositório grande for lento, você pode querer mudar para um novo mecanismo de indexação, habilitar a compactação de prefixo de caminho e habilitar o cache de arquivo não rastreado definindo index.version como 4 e habilitando core.untrackedCache. As macros permitem que você não perca tempo procurando a solução certa na documentação, mas ative imediatamente as configurações com otimizações para repositórios com grande número de arquivos:

    recurso de configuração do git.manyFiles verdadeiro

  • Habilitado por padrão está o armazenamento de objetos na forma de um gráfico de commit (gráfico de commit), no qual não uma lista linear de hashes de objetos com links para outros objetos, mas uma estrutura na forma de um gráfico é usada para indexação . Se anteriormente, para determinar os lançamentos que contêm uma determinada correção, era necessário carregar cada objeto do disco para procurar links, então quando armazenado na forma de um gráfico, você pode determinar imediatamente todos os links necessários. Mudar para o armazenamento na forma de um gráfico de commit no kernel Linux e nos repositórios Git nos permitiu alcançar um aumento quase duplo no desempenho das operações com filiais. Para habilitar o novo método de armazenamento após atualizar para o Git 2.24, você deve executar o comando "git gc".

    Entre as mudanças associadas ao commit-graph, notamos também que a implementação do indicador de progresso da operação em comandos relacionados ao commit-graph (“git commit-graph write”, “git commit-graph verify”, etc.) foi trazida para um formato comum com outros comandos. .). O indicador de progresso agora é exibido apenas para o terminal por padrão (use a opção "-[no-]progress" para alterar o comportamento). Além disso, foi adicionado um novo parâmetro de configuração fetch.writeCommitGraph, que permite a atualização automática do arquivo com o gráfico de commit durante as operações “git fetch” (todos os commits recuperados de repositórios externos irão imediatamente para o gráfico de commit sem a necessidade de execute o auto-gc separadamente);

  • Adicionado um comando para substituir o histórico de alterações - "repositório de filtro git", que é uma alternativa mais simples ao comando"git filter-branch» para realizar operações no histórico de alterações no repositório (por exemplo, excluir um arquivo do repositório ou recuperar o histórico de alterações em um diretório específico). Para melhorar a eficiência, em vez de uma análise ordenada de commit por commit, git filter-repo executa operações na representação do histórico na forma de um fluxo contínuo.

    A filtragem do histórico é realizada através da opção “-path-{glob,regex}”, que permite utilizar tanto máscaras simples quanto expressões regulares. Também existem opções para realizar uma pesquisa e substituir ou limpar objetos binários maiores que um tamanho especificado. Cada commit reescrito é fornecido com um novo identificador de hash SHA-1 e todas as referências ao commit substituído são atualizadas de acordo com o novo identificador.

    Para exibir um resumo das estatísticas sobre o repositório (número de objetos por tipo, maiores arquivos e diretórios, quais extensões requerem mais espaço em disco, etc.), é fornecida a opção “-analyze”. Para expandir a funcionalidade, é possível conectar manipuladores de retorno de chamada arbitrários em Python, por meio dos quais você pode criar novos subcomandos e processar vários eventos (por exemplo, novos tipos de arquivo);

  • Adicionada opção "--end-of-options" para separar opções de nomes de links, que podem começar com um caractere "-" e serem tratados como opções ("git log --end-of-options -super-dangerous-option" ). Se na vida cotidiana esses nomes puderem ser escapados como “git log 'refs/heads/—super-dangerous-option'”, então os scripts poderão ter problemas para definir o namespace. O delimitador geralmente aceito " - " não é aplicável neste caso, pois já é usado para separar nomes de links de arquivos (por exemplo, “git log —end-of-options —super-dangerous-option ^master — path/to /arquivo");
  • Adicionadas opções "--strategy" e "--strategy-option" a "git rebase --rebase-merges" para selecionar estratégias de fusão;
  • Adicionado um novo manipulador ".git/hooks/pre-merge-commit" que é chamado após a conclusão de uma mesclagem, mas antes da gravação do commit resultante;
  • O suporte para completar variáveis ​​de configuração em relação às configurações de comandos específicos foi adicionado ao mecanismo de conclusão de comandos.
    Por exemplo, se você precisar digitar “git -c core.autocrlf=false add path/to/my/file” mas não se lembrar do nome exato da variável “core.autocrlf”, você pode pressionar Tab e obter um dica.

Além disso, os desenvolvedores Git adicionado código de conduta para um participante do projeto, que define os princípios básicos para a resolução de situações de conflito. O documento é baseado nas recomendações "Convênio do Colaborador", usado em muitos projetos de código aberto, incluindo o kernel Linux, Eclipse, Freedesktop, GitLab, Ruby e Kubernetes. O documento define oportunidades iguais para todos os participantes, independentemente da sua visão de mundo, idade, género, preferências religiosas, nível de educação, estatuto social e nacionalidade. A comunidade acolhe uma forma amigável de comunicação, compreensão, empatia pelos problemas dos outros participantes, aceitando críticas construtivas e tomando as melhores decisões para toda a comunidade. Não são permitidas trollagens, comunicação ofensiva, tentativas de humilhação, assédio, violação de privacidade, divulgação de informações pessoais e outras ações que possam ser consideradas inadequadas para a comunicação profissional.

Fonte: opennet.ru

Adicionar um comentário