«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > `.git-blame-ignore-revs` для игнорирования массовых изменений форматирования.

`.git-blame-ignore-revs` для игнорирования массовых изменений форматирования.

Опубликовано 3 ноября 2024 г.
Просматривать:214

.git-blame-ignore-revs — это функция Git, представленная в версии 2.23, которая позволяет игнорировать определенные коммиты в результатах git Blame. Это особенно полезно для массовых коммитов, которые изменяют большое количество строк без изменения фактической функциональности кода, например, изменения форматирования, переименования или применения стандартов кодирования в базе кода. Игнорируя эти нефункциональные изменения, git виноват может сосредоточиться на значимых изменениях, которые объясняют контекст и причины кода.

Почему .git-blame-ignore-revs имеет значение

Когда вы используете git Assessment для файла, он показывает, какой коммит изменил каждую строку файла последним, а также автора и временную метку. Это полезно для отслеживания того, почему была изменена конкретная строка. Однако, если большой коммит, который вносит чисто форматирующие изменения, например, применяет красивее, является частью истории, вина git может указывать на этот коммит во многих строках. Это затрудняет поиск фактической истории функциональных изменений.

Например, если ваша команда использует такой инструмент, как Prettier или ESLint, для переформатирования всей базы кода, полученный коммит может затронуть тысячи строк кода. Без .git-blame-ignore-revs git Assessment показывал бы этот коммит как ответственный за каждую затронутую строку, что могло бы скрыть более значимую историю каждой строки.

Используя .git-blame-ignore-revs, вы можете указать git вину пропустить эти коммиты и сосредоточиться на важных изменениях.

Как использовать .git-blame-ignore-revs

Чтобы понять, как использовать эту функцию, давайте рассмотрим пример из репозитория React.

Шаг 1. Определите коммиты массового форматирования

Исходный код React включает массовые коммиты, при которых такие инструменты, как Prettier, запускались по всему проекту. Вот два таких коммита:

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

  1. Зафиксировать: c998bb1 Сообщение: [компилятор] Запустите красивее, исправьте привязку Этот коммит применяет форматирование Prettier ко всей базе кода, изменяя многие строки без изменения функциональности.

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

2. Зафиксировать: fd2b3e1

Сообщение: Компилятор: Unfork prettier config

Этот коммит содержит дальнейшие обновления конфигурации Prettier, затрагивающие все файлы .ts и .tsx в репозитории.

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

Эти коммиты касаются только форматирования и не предоставляют значимого контекста при выяснении того, почему строка кода была написана именно так.

Шаг 2. Создайте файл .git-blame-ignore-revs.

Чтобы git Assessment игнорировал эти коммиты массового форматирования, мы можем создать файл .git-blame-ignore-revs в корне репозитория.

  1. Создайте файл .git-blame-ignore-revs:
touch .git-blame-ignore-revs

2. Добавьте в файл соответствующие хэши коммитов, объяснив, почему каждый коммит игнорируется. В этом случае мы добавим два коммита, которые мы определили ранее:

# Prettier formatting changes 
c998bb1ed4b3285398c9c7797135d3f060243c6a 
fd2b3e13d330a4559f5aa21462e1cb2cbbcf144b

3. Сохраните файл .git-blame-ignore-revs в репозитории. Версионность этого файла может быть указана вместе с вашим кодом, что позволит всей команде использовать один и тот же список игнорируемых коммитов.

Шаг 3. Настройте Git для использования .git-blame-ignore-revs

Чтобы не вводить параметр --ignore-revs-file каждый раз при использовании git Assessment, вы можете настроить Git на автоматическое использование файла .git-blame-ignore-revs.

  1. Настройте конфигурацию на уровне репозитория:
git config blame.ignoreRevsFile .git-blame-ignore-revs

Это гарантирует, что каждый раз, когда кто-то запускает git Assessment в этом репозитории, Git автоматически игнорирует коммиты, перечисленные в .git-blame-ignore-revs.

Шаг 4. Запустите git bug с игнорируемыми коммитами

Давайте посмотрим, как это работает на практике. Если не игнорировать коммиты массового форматирования, git виноват может показать:

$ 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) }

Эти выходные данные показывают, что последнее изменение в строках 1 и 3 произошло из-за фиксации форматирования Prettier (c998bb1e), а строки 2 и 4 были изменены в другой массовой фиксации (fd2b3e13). Поскольку это изменения форматирования, это не поможет понять, кто ввел реальную логику этих строк.

После настройки .git-blame-ignore-revs запуск git Assessment пропустит массовые коммиты и покажет реальную историю:

$ 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) }

Теперь git Assessment приписывает строки правильным коммитам, игнорируя несущественные изменения форматирования. Это дает нам полезную информацию, показывающую, кто внес фактические функциональные изменения.

Заключение

Функция .git-blame-ignore-revs в Git 2.23 меняет правила игры для проектов с массовым форматированием или изменением стиля. Настроив файл .git-blame-ignore-revs и настроив свой репозиторий, вы сможете применять стандарты кодирования, запускать такие инструменты, как Prettier, или рефакторить код, не беспокоясь о загрязнении истории обвинений.

Благодаря такому подходу ваша команда сможет уверенно улучшать качество и форматирование кода, не жертвуя возможностью отслеживать значимые изменения, гарантируя, что git останется ценным инструментом для понимания истории и причин, лежащих в основе каждой строки кода.

О нас:

В Think Throo мы стремимся обучать передовым архитектурным концепциям кодовой базы, используемым в проектах с открытым исходным кодом.

Увеличьте свои навыки программирования в 10 раз, практикуя передовые архитектурные концепции в Next.js/React, изучайте лучшие практики и создавайте проекты промышленного уровня.

У нас открытый исходный код — https://github.com/thinkthroo/thinkthroo (дайте нам звезду!)

Повышайте квалификацию своей команды с помощью наших продвинутых курсов, основанных на архитектуре кодовой базы. Свяжитесь с нами по адресу [email protected], чтобы узнать больше!

Ссылки:

  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/



Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/thinkthroo/git-blame-ignore-revs-to-ignore-bulk-formatting-changes-5fee?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3