Верх страницы
Обложка к записи Пишем коммиты как профессионалы
Время для прочтения: 0 мин. 31 сек.

Пишем коммиты как профессионалы

Создание эффективных коммитов — отличительная черта опытных разработчиков. Принятие спецификации «Conventional Commits» (Соглашение о коммитах) служит маяком для структурирования коммитов.

Это не просто руководство, это путь к более четкой истории коммитов, которая гармонично сочетается с семантическим версионированием (SemVer).

Что такое «Соглашение о коммитах»?

«Conventional Commits» предлагает легкую, но мощную структуру для организации коммитов. Классифицируя изменения по отдельным типам, таким как фичи, исправления и другие, они устанавливают золотой стандарт ясности и последовательности и соответствуют семантическому версионированию.

Зачем использовать «Соглашение о коммитах»

  • Автоматическое создание списков изменения.
  • Автоматическое определение семантического повышения версии (на основе типов совершённых коммитов).
  • Информирование товарищей по команде, общественности и других заинтересованных сторон о характере изменений.
  • Запуск процессов сборки и публикации.
  • Упрощать людям участие в ваших проектах, позволив им изучить более структурированную историю коммитов.

Анатомия «Соглашения о коммитах»

При создании коммитов, пожалуйста, используйте простой формат, который обычно выглядит так: <тип>: <описание>.

Полн коммит должно иметь следующую структуру:

<type>[необязательный scope]: <description>
[необязательное body]
[необязательный footer]
  • type: Тип коммита
  • scope: Краткое описание участка кодовой базы, заключенное в круглые скобки, за которыми следуют двоеточие и пробел. Сообщения, как правило, в настоящем времени и императиве
  • description: Краткое описание изменений в коде
  • body: Более длинное описание коммита, предоставляющее дополнительный контекст изменений. Должно быть помещено на одну пустую строку после описания.
  • footer:
    Сноски должны содержать только ссылки на дополнительные вопросы, касающиеся изменений.

Примеры

Коммит, который я сделал, чтобы решить проблему:

feat(homepage): Add carousel feature to showcase testimonials

Implemented a carousel component on the homepage
Added client testimonials section for improved user engagement

Fixes #12

Больше примеров:

  • feat: Add new rating component
  • fix: Resolve issue with city search feature
  • docs: Update README with new contribution guidelines

Типы коммитов

В дополнение к классическим fix и feat у нас есть целый букет типов коммитов. Это как выбор начинки для вашей пиццы с коммитами:

  • build: Изменения, связанные с процессами или инструментами сборки.
  • chore: Регулярное обслуживание или административные задачи.
  • ci: Обновления в настройках непрерывной интеграции.
  • docs: Изменения, связанные с документацией.
  • style: Изменения, которые не влияют на функциональность кода (например, форматирование кода).
  • refactor: Модификация кода без изменения его поведения (рефакторинг).
  • perf: Улучшение производительности.
  • test: Добавление или изменение тестов.

Вы можете использовать эти типы для категоризации коммитов в соответствии с их характером. Это помогает поддерживать последовательность в сообщениях и лучше организовать изменения в истории проекта.

Готовые решения для IDE

PhpStorm

Для IDE PhpStorm от JetBrains есть готовое решение в виде плагина «Conventional Commit«, целью которого является обеспечение автокомплита для «Соглашений о коммитах», также называемых семантическими коммитами, в диалоге VCS Commit.

Что умеет плагин

  • Стандартное завершение — на основе контекста
  • Шаблонное завершение — инициируется ручками
  • Предлагает определённый уровень кастомизации для использования персонализированных и разделяемых токенов по умолчанию, а также прикрепление дополнительных провайдеров для различных частей коммита: type, scope, subject, body, footer type и footer.

VSCode

Для популярного бесплатного редактора VSCode тоже имеется решение в виде расширения «Conventional Commits«

Что умеет расширение

Это расширение поможет вам заполнить сообщение коммита в соответствии со спецификацией «Соглашения о коммитах».

  • Поддерживает конфигурации commitlint
  • Поддержка автокоммита и push после ввода сообщений
  • Поддержка управления scope на уровне проекта.
  • Поддержка gitmojis.
  • Поддержка рабочих пространств VSCode.

Ссылки

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Предыдущая запись
Следующая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы