"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > `.git-blame-ignore-revs` para ignorar alterações de formatação em massa.

`.git-blame-ignore-revs` para ignorar alterações de formatação em massa.

Publicado em 2024-11-03
Navegar:948

.git-blame-ignore-revs é um recurso do Git introduzido na versão 2.23 que permite ignorar commits específicos nos resultados do git culpa. Isso é particularmente útil para confirmações em massa que alteram um grande número de linhas sem alterar a funcionalidade real do código, como alterações de formatação, renomeação ou aplicação de padrões de codificação em uma base de código. Ao ignorar essas mudanças não funcionais, a culpa do git pode se concentrar em edições significativas que explicam o contexto e o raciocínio por trás do código.

Por que .git-blame-ignore-revs é importante

Quando você usa git culpa em um arquivo, ele mostra qual commit alterou pela última vez cada linha do arquivo, junto com o autor e o carimbo de data/hora. Isso é útil para rastrear por que uma linha específica foi alterada. No entanto, se um commit grande que faz alterações puramente de formatação, como aplicar mais bonito, faz parte da história, a culpa do git pode apontar para esse commit por muitas linhas. Isso torna difícil encontrar o histórico real de alterações funcionais.

Por exemplo, se sua equipe usar uma ferramenta como Prettier ou ESLint para reformatar toda a base de código, o commit resultante poderá abranger milhares de linhas de código. Sem .git-blame-ignore-revs, git culpa mostraria este commit como responsável por cada linha afetada, o que poderia obscurecer a história mais significativa por trás de cada linha.

Ao usar .git-blame-ignore-revs, você pode dizer ao git culpa para pular esses commits e focar nas mudanças que importam.

Como usar .git-blame-ignore-revs

Para entender como usar esse recurso, vamos examinar um exemplo do repositório React.

Etapa 1: Identifique os compromissos de formatação em massa

O código-fonte do React inclui commits em massa onde ferramentas como o Prettier foram executadas em todo o projeto. Aqui estão dois desses commits:

`.git-blame-ignore-revs` to ignore bulk formatting changes.

  1. Confirmar: c998bb1 Mensagem: [compiler] Execute mais bonito, corrija o snap Este commit aplica uma formatação mais bonita em toda a base de código, alterando muitas linhas sem alterar a funcionalidade.

`.git-blame-ignore-revs` to ignore bulk formatting changes.

2. Confirmar: fd2b3e1

Mensagem: Compilador: Unfork configuração mais bonita

Este commit contém atualizações adicionais para a configuração do Prettier, afetando todos os arquivos .ts e .tsx no repositório.

`.git-blame-ignore-revs` to ignore bulk formatting changes.

Esses commits tratam apenas da formatação e não fornecem contexto significativo ao investigar por que uma linha de código foi escrita daquela maneira.

Etapa 2: Crie o arquivo .git-blame-ignore-revs

Para fazer com que o git culpa ignore esses commits de formatação em massa, podemos criar um arquivo .git-blame-ignore-revs na raiz do repositório.

  1. Crie o arquivo .git-blame-ignore-revs:
touch .git-blame-ignore-revs

2. Adicione os hashes de commit relevantes ao arquivo, explicando por que cada commit está sendo ignorado. Neste caso, adicionaremos os dois commits que identificamos anteriormente:

# Prettier formatting changes 
c998bb1ed4b3285398c9c7797135d3f060243c6a 
fd2b3e13d330a4559f5aa21462e1cb2cbbcf144b

3. Salve o arquivo .git-blame-ignore-revs no repositório. Este arquivo pode ser versionado junto com seu código, permitindo que toda a equipe use a mesma lista de commits ignorados.

Etapa 3: Configurar o Git para uso .git-blame-ignore-revs

Para evitar digitar a opção --ignore-revs-file toda vez que usar git culpa, você pode configurar o Git para usar automaticamente o arquivo .git-blame-ignore-revs.

  1. Defina a configuração no nível do repositório:
git config blame.ignoreRevsFile .git-blame-ignore-revs

Isso garante que toda vez que alguém executar git culpa neste repositório, o Git irá ignorar automaticamente os commits listados em .git-blame-ignore-revs.

Etapa 4: execute git culpa com os commits ignorados

Vamos ver como isso funciona na prática. Sem ignorar os commits de formatação em massa, git culpa pode mostrar:

$ git blame src/someFile.tsx
c998bb1e (Joe Bloggs 2023-03-15 10:00:00  0200 1) import React from 'react';
fd2b3e13 (Alan 2023-04-01 14:15:30  0200 2) function App() {
c998bb1e (Joe Bloggs 2023-03-15 10:00:00  0200 3)     return 
Hello, world!
; fd2b3e13 (Ben 2023-04-01 14:15:30 0200 4) }

Esta saída indica que a última alteração nas linhas 1 e 3 foi devido ao commit de formatação mais bonito (c998bb1e), e as linhas 2 e 4 foram modificadas em outro commit em massa (fd2b3e13). Como essas são alterações de formatação, isso não é útil para entender quem introduziu a lógica real por trás dessas linhas.

Depois de configurar .git-blame-ignore-revs, executar git culpa ignorará os commits em massa e mostrará o histórico real:

$ git blame src/someFile.tsx
a23d9b34 (May 2022-12-01 09:30:00  0200 1) import React from 'react';
b12e45a6 (JJ 2022-12-05 11:45:15  0200 2) function App() {
a23d9b34 (Joe 2022-12-01 09:30:00  0200 3)     return 
Hello, world!
; b12e45a6 (Ram 2022-12-05 11:45:15 0200 4) }

Agora, git culpa atribui as linhas aos commits corretos, ignorando as alterações de formatação sem importância. Isso nos fornece informações úteis, mostrando quem fez as mudanças funcionais reais.

Conclusão

O recurso .git-blame-ignore-revs no Git 2.23 é uma virada de jogo para projetos com formatação em massa ou mudanças de estilo. Ao configurar um arquivo .git-blame-ignore-revs e configurar seu repositório, você pode aplicar padrões de codificação, executar ferramentas como Prettier ou refatorar código sem se preocupar em poluir o histórico de culpa.

Com essa abordagem, sua equipe pode melhorar com segurança a qualidade e a formatação do código, sem sacrificar a capacidade de rastrear alterações significativas, garantindo que a culpa do git continue sendo uma ferramenta valiosa para compreender o histórico e o raciocínio por trás de cada linha de código.

Sobre nós:

No Think Throo, temos a missão de ensinar os conceitos avançados de arquitetura de base de código usados ​​em projetos de código aberto.

10x suas habilidades de codificação praticando conceitos de arquitetura avançados em Next.js/React, aprenda as melhores práticas e crie projetos de nível de produção.

Somos código aberto - https://github.com/thinkthroo/thinkthroo (Dê-nos uma estrela!)

Aprimore sua equipe com nossos cursos avançados baseados na arquitetura de base de código. Entre em contato conosco em [email protected] para saber mais!

Referências:

  1. https://github.com/facebook/react/blob/main/.git-blame-ignore-revs

  2. https://gist.github.com/kateinoigakukun/b0bc920e587851bfffa98b9e279175f2

  3. https://github.com/facebook/react/commit/c998bb1ed4b3285398c9c7797135d3f060243c6a

  4. https://moxio.com/blog/ignoring-bulk-change-commits-with-git-blame/



Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/thinkthroo/git-blame-ignore-revs-to-ignore-bulk-formatting-changes-5fee?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3