Назад к вопросам
Middle
120
questionbank

Что такое pre-commit check?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Pre-commit check - это набор скриптов, выполняющихся перед каждым коммитом в Git репозитории. Он проверяет изменения на соответствие стандартам качества кода, стилю, наличию потенциальных ошибок и другим правилам.

Примеры проверок:

  • Проверка синтаксиса Python (например, с помощью flake8, black).
  • Форматирование кода (например, с помощью autopep8, black).
  • Проверка наличия отладочного кода (print, pdb).
  • Проверка наличия конфликтов слияния.
  • Выполнение Unit тестов.

Использование pre-commit hooks помогает поддерживать consistent (однозначный) и качественный codebase, предотвращая попадание некорректного или неформатированного кода в репозиторий.

Как работает:

  1. Пользователь выполняет git commit.
  2. Git вызывает скрипт pre-commit из директории .git/hooks.
  3. Скрипт выполняет настроенные проверки.
  4. Если все проверки прошли успешно, коммит разрешается.
  5. Если хотя бы одна проверка не удалась, коммит прерывается с сообщением об ошибке.

Для управления pre-commit hooks часто используется сторонняя библиотека pre-commit.

Пример .pre-commit-config.yaml (для pre-commit):

// .pre-commit-config.yaml
repos:
-   repo: https://github.com/psf/black
    rev: 22.3.0 // Версия инструмента
    hooks:
    -   id: black // Идентификатор хука
-   repo: https://github.com/PyCQA/flake8
    rev: 4.0.1
    hooks:
    -   id: flake8