Как обновить сообщение коммита в случае `--no-verify`? - PullRequest
0 голосов
/ 15 марта 2020

Мы написали хуки перед фиксацией для нашего git репозитория. Но разработчики могут использовать --no-verify для обхода хуков предварительной фиксации и фиксации в любом случае. Мне было интересно, если git предоставляет какой-либо способ обновить сообщение фиксации, когда присутствует флаг --no-verify, возможно, добавить Not Hook Verified: в такие сообщения фиксации? Или какая-то другая проверка, которая может быть добавлена ​​для этого сценария?

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Если ваша цель - обновить само сообщение о фиксации, например, автоматически включить идентификатор JIRA или что-то подобное, вы можете использовать хук prepare-commit-msg для изменения сообщения фиксации перед запуском редактора. Конечно, разработчик может изменить это сообщение, но я лично нашел его полезным для случаев, подобных упомянутому выше.

Если ваша цель состоит в том, чтобы исключить разработчиков, использующих git commit --no-verify, то нет, нет способа сделать это. Если ваша цель заключается в реализации политики для кода, то это изменение либо входит в ловушку pre-receive, либо в вашу систему CI. Вы не можете доверять тому, что что-либо будет работать в системе разработчика, потому что разработчик может изменить или удалить его.

Кроме того, реализация pre-commit хуков для тестирования или проверки элементов является проблемой, потому что это делает его сложнее и меньше людям удобно делать небольшие исправления, чтобы они потом вместе взялись за дело. Например, я часто фиксирую изменение WIP, когда у меня есть небольшая логическая часть, которая работает, и затем я могу откатиться, если что-то сломается. Когда я готов подать, я объединяю их вместе в логическое изменение. Я прекрасно знаю, что такие коммиты не будут соответствовать стандартам сообщений коммитов или пройдут все тесты, но они чрезвычайно полезны для временных целей.

0 голосов
/ 15 марта 2020

Если вы не хотите раскошелиться git, изменить поведение --no-verify, распространить измененный бинарный файл git и каким-то образом убедить всех использовать его, невозможно помешать пользователям делать git commit --no-verify и добавить несколько произвольных слова к сообщению фиксации. Рассмотрите возможность настройки сервера непрерывной интеграции, который всегда будет запускать проверки при получении запроса на извлечение / объединение, его нельзя обойти, поскольку он запускается на сервере.

...