Git 2.37 versão de controle de origem

O lançamento do sistema de controle de origem distribuído Git 2.37 foi anunciado. 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, foram adotadas 395 alterações na nova versão, preparada com a participação de 75 desenvolvedores, dos quais 20 participaram do desenvolvimento pela primeira vez. Principais inovações:

  • O mecanismo de índices parciais (índice esparso), cobrindo apenas parte do repositório, está pronto para uso generalizado. Os índices parciais podem melhorar o desempenho e economizar espaço em repositórios que realizam operações de clonagem parcial (checkout esparso) ou trabalham com uma cópia incompleta do repositório. A nova versão completa a integração de índices parciais nos comandos git show, git sparse-checkout e git stash. O benefício de desempenho mais notável do uso de índices parciais é visto com o comando git stash, que obteve um aumento de 80% na velocidade de execução em algumas situações.
  • Um novo mecanismo “cruft packs” foi implementado para empacotar objetos inacessíveis que não são referenciados no repositório (não referenciados por ramificações ou tags). Objetos inacessíveis são excluídos pelo coletor de lixo, mas permanecem no repositório por um certo tempo antes de serem excluídos para evitar condições de corrida. Para rastrear o período de ocorrência de objetos inacessíveis, é necessário anexar tags a eles com o horário de alteração de objetos semelhantes, o que não permite armazená-los em um arquivo pack no qual todos os objetos possuem um horário de alteração comum. Anteriormente, salvar cada objeto em um arquivo separado causava problemas quando havia um grande número de objetos novos e inacessíveis que ainda não eram elegíveis para exclusão. O mecanismo proposto de “pacotes cruft” permite armazenar todos os objetos inacessíveis em um arquivo de pacote e refletir os dados sobre o tempo de modificação de cada objeto em uma tabela separada armazenada em um arquivo com a extensão “.mtimes”.
  • Para Windows e macOS, existe um mecanismo integrado para rastrear alterações no sistema de arquivos, permitindo evitar a iteração em todo o diretório de trabalho ao executar operações como “git status”. Anteriormente, para rastrear alterações, utilitários externos para rastrear alterações no FS, como o Watchman, podiam ser conectados por meio de ganchos, mas isso exigia a instalação de programas e configurações adicionais. Agora a funcionalidade especificada está integrada e pode ser habilitada com o comando “git config core.fsmonitor true”.
  • No comando “git sparse-checkout”, foi declarado obsoleto o suporte a uma alternativa ao modo “—cone”, método de definição de templates para clonagem parcial, o que permite, ao determinar a parte do repositório que está sujeita a a operação de clonagem, para listar arquivos individuais usando a sintaxe “.gitignore”, que não permite o uso para otimização de índices parciais.
  • Maior flexibilidade na configuração da chamada fsync() para liberar alterações no disco. O suporte para a estratégia de sincronização “batch” foi adicionado ao parâmetro “core.fsyncMethod”, que permite agilizar o trabalho ao gravar um grande número de arquivos individuais, acumulando alterações no cache de writeback, que é redefinido por um único fsync() chamar. O teste, que resultou na adição de 500 arquivos usando o comando “git add”, foi concluído em 0.15 segundos quando o novo modo foi habilitado, enquanto a chamada de fsync() levou 1.88 segundos para cada arquivo e sem usar fsync - 0.06 segundos.
  • Comandos de passagem de ramificação como “git log” e “git rev-list” agora têm uma opção “-since-as-filter=X” que permite filtrar informações sobre commits anteriores a “X”. Ao contrário da opção “—since”, o novo comando é implementado como um filtro que não interrompe a pesquisa após o primeiro commit anterior ao tempo especificado.
  • No comando “git remote”, ao especificar o sinalizador “-v”, são exibidas informações sobre clones parciais do repositório.
  • Adicionada configuração "transfer.credentialsInUrl", que pode assumir os valores "warn", "die" e "allow". Se especificado no parâmetro “remote. .url", a tentativa de executar uma operação de "fetch" ou "push" falhará com um erro se a configuração "transfer.credentialsInUrl" estiver definida como "die" ou um aviso se definida como "warn".
  • Por padrão, a nova implementação do modo interativo do comando “git add -i”, reescrito de Perl para C, está habilitada.

Fonte: opennet.ru

Adicionar um comentário