Lançamento do sistema de controle de versões Git 2.54

Foi lançado o release do sistema de controle de versões distribuído Git 2.54. O Git se destaca por sua alta performance e oferece recursos de desenvolvimento não linear, baseados em ramificações e fusões de branches. Para garantir a integridade do histórico e a resistência a alterações retroativas, utiliza-se a hash implícita de todo o histórico anterior em cada commit, além da certificação com assinaturas digitais dos desenvolvedores de tags e commits individuais. O código do Git é distribuído sob a licença GPLv2+.

Em comparação com a versão anterior, 770 alterações foram adotadas na nova versão, preparadas com a participação de 137 desenvolvedores (66 deles participaram pela primeira vez no desenvolvimento do Git). As principais novidades incluem:

  • Foi implementado o comando "git history", que fornece funcionalidades experimentais para reescrever o histórico de alterações de maneira mais simples e segura do que o rebase de commits com o comando "git rebase". Estão disponíveis duas operações:
    • "git history reword " para reescrever a mensagem do commit especificado sem alterar a árvore de trabalho e o índice (exceto a anotação, o restante permanece inalterado). Por exemplo, para corrigir um erro de digitação.
    • "git history split " para dividir interativamente o commit especificado em dois commits diferentes, movendo partes selecionadas do commit original para um commit adicional.

    Nas futuras versões, espera-se a adição de comandos adicionais: "git history fixup" para corrigir um commit, "git history drop" para excluir um commit, "git history reorder" para alterar a ordem dos commits e "git history squash" para unir commits.

  • Foi implementado um novo método para definir manipuladores (hook) em arquivos de configuração. Em vez de colocar scripts com manipuladores no diretório «.git/hooks» em cada repositório, agora os comandos para chamar manipuladores podem ser definidos diretamente nos arquivos de configuração. As configurações podem ser vinculadas ao repositório ou especificadas em arquivos de configuração que se aplicam a todos os repositórios (/etc/gitconfig) ou repositórios de usuários (~/.gitconfig). É possível vincular vários manipuladores a um único evento. Scripts de «.git/hooks» ainda são chamados, mas são executados após os manipuladores dos arquivos de configuração. Para ver a lista de manipuladores, use o comando «git hook list», e para desativar seletivamente a chamada de manipuladores, configure «hook..enabled = false». [hook «linter»] event = pre-commit command = ~/.bin/linter —cpp20 [hook «no-leaks»] event = pre-commit command = ~/.bin/leak-detector $ git hook list pre-commit global linter ~/.bin/linter —cpp20 local no-leaks ~/.bin/leak-detector
  • Na equipe «git maintenance», a estratégia padrão é «geometric» («git config set maintenance.strategy geometric»), permitindo reduzir o tempo de manutenção de grandes monorepositórios. Em comparação com a estratégia anterior, que utilizava lógica semelhante ao comando «git gc», a nova estratégia evita a reempacotamento de todos os objetos e exclui operações excessivamente intensivas em recursos, como a fusão de todos os arquivos de pacote (sempre que possível, a fusão é feita em partes e sem limpeza de objetos removidos).
  • O banco de dados de objetos (ODB) e as APIs relacionadas foram migrados para uma nova arquitetura, baseada no uso de backends plugáveis. A reestruturação realizada abstrai o formato de armazenamento de objetos e, no futuro, permitirá implementar recursos como backends e formatos de objetos alternativos, por exemplo, para armazenamento mais eficiente de grandes arquivos binários ou para otimização do funcionamento de grandes provedores de hospedagem git.
  • No comando "git repo structure", que fornece informações sobre a estrutura do repositório, é exibido não apenas o tamanho total, mas também os maiores objetos de cada tipo, o que permite a avaliação do tamanho sem a necessidade de utilizar a ferramenta externa git-sizer. $ git repo structure … | * Maiores objetos | | | * Commits | | | * Tamanho máximo [1] | 17.23 KiB | | * Máximos pais [2] | 10 | | * Árvores | | | * Tamanho máximo [3] | 58.85 KiB | | * Máximas entradas [4] | 1.18 k | | * Blobs | | | * Tamanho máximo [5] | 1019.51 KiB | | * Tags | | | * Tamanho máximo [6] | 7.13 KiB |
  • No comando "git replay", utilizado como alternativa ao "git rebase" para recriar o histórico em servidor sem uma árvore de trabalho, a atualização atômica de referências é habilitada por padrão (em vez da saída da lista de comandos update-ref para execução manual), foi implementada a opção "--revert" para reverter alterações de uma série de commits, eliminando os commits vazios resultantes e permitindo a recriação do histórico até o commit raiz.
  • Na "git rev-list" e comandos similares, foi adicionada a opção "--maximal-only" para mostrar apenas commits que não são acessíveis por outros commits.
  • No comando "git repo info" foi adicionada a opção "--keys" para exibir uma lista de todas as chaves conhecidas.
  • No comando "git add -p", ao navegar entre blocos de código com as teclas "J" e "K", foi implementada a marcação de blocos já aprovados e pulados. Adicionada a opção "--no-auto-advance" para desativar a transição automática para o próximo arquivo, permitindo retornar a arquivos anteriores antes do commit.
  • O web interface "gitweb" foi otimizado para funcionar em dispositivos móveis.
  • No comando "git apply --directory", assegurada a normalização de caminhos de arquivos antes do uso, como "./un/../normalized/path".
  • Documentada a possibilidade de adicionar comandos auxiliares personalizados por meio do armazenamento de arquivos "git-" no diretório de arquivos executáveis.
  • No comando "git send-email" foi adicionada a suporte a certificados de cliente.
  • Para o comando "git status", foi implementada a configuração "status.compareBranches", por meio da qual é possível especificar os branches com os quais a comparação será feita. [status] compareBranches = @{upstream} @{push}
  • No "git rebase" foi adicionada a opção "--trailer" para facilitar a adição de metadados a todos os commits. git rebase --trailer "Reviewed-by: Test "
  • Foi adicionada à equipe "git fast-import" a capacidade de substituir assinaturas para commits que se tornaram inválidas após a importação.
  • Adicionada a suporte para empacotamento (compaction) de índices de múltiplos pacotes MIDX (multi-pack index), onde camadas pequenas de índices MIDX com informações sobre a disponibilidade de objetos são combinadas, assim como os arquivos bitmap relacionados, permitindo reduzir o número de camadas acumuladas em repositórios antigos.
  • Na equipe "git backfill", foi implementada a possibilidade de especificar revisões (intervalos de commits) e máscaras de caminhos (pathspec) para limitar as partes da história de mudanças a serem carregadas. git backfill main~100..main git backfill — '*.c'
  • Formas alternadas de chamar o comando "git config list" foram adicionadas — "git config -l" e "git config --list".
  • O uso de caracteres não-ASCII em nomes de aliases de comando, definidos no arquivo de configuração, é permitido. [alias "obter"] command = fetch
  • A exibição de assinaturas que tiveram suas chaves GPG expiradas, mas que eram válidas no momento da assinatura do commit, foi alterada. Essas assinaturas agora são exibidas como corretas, com uma observação sobre a expiração da chave (anteriormente, eram destacadas em vermelho, o que sugeria sua invalidade).
  • Ao acessar repositórios via HTTP, o tratamento de erros com código 429 (Too Many Requests) foi garantido. Solicitações que falharem com esse erro agora são tratadas não como um problema fatal, mas como um erro temporário, para o qual a operação deve ser repetida após algum tempo. O atraso antes da repetição é definido pela opção "http.retryAfter", o número de tentativas — "http.maxRetries", e o tempo de espera — "http.maxRetryTime".

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