.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.
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.
Para entender como usar esse recurso, vamos examinar um exemplo do repositório React.
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:
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.
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.
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.
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.
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.
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.
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) returnHello, 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) returnHello, 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.
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.
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!
https://github.com/facebook/react/blob/main/.git-blame-ignore-revs
https://gist.github.com/kateinoigakukun/b0bc920e587851bfffa98b9e279175f2
https://github.com/facebook/react/commit/c998bb1ed4b3285398c9c7797135d3f060243c6a
https://moxio.com/blog/ignoring-bulk-change-commits-with-git-blame/
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