Доброе утро всем! Для проекта на Java на github я должен использовать функции github, такие как «issues». Для этого все «коммиты» должны содержать хотя бы один выход. Поэтому, чтобы моя команда не совершала тупиковые коммиты, я должен проверять перед каждым коммитом. GitHooks - идеальный инструмент для этой работы. Только для реализации сценария, совместимого с Windows.
В среде Linux я знаю, как прервать фиксацию, но я не знаю, как получить содержимое фиксации, которое сможет проверить условие.
1 ответ
В общем, хуки Git не подходят для этого случая, потому что пользователь может обойти их с помощью git commit --no-verify
(наряду с множеством других методов). Что-либо в системе пользователя не является эффективным элементом управления, поскольку пользователь может изменить или удалить это.
Обычно такое поведение выполняется на стороне сервера. В некоторых случаях вы можете запустить ловушку pre-receive
, чтобы проверить эти вещи, но это невозможно на GitHub. Вместо этого вы должны проверить это в своей системе CI в дополнение к другим проверкам, которые вы выполняете.
Вы можете написать сценарий для этого в оболочке, например, так, где два аргумента - это основная ветвь (обычно master
) и HEAD фиксации для запроса на вытягивание:
#!/bin/sh -e
git rev-list "$1".."$2" | xargs -L1 sh -c 'git log -1 --format=%b "$@" | grep -E "#[0-9]+"'
Это проверит шаблон #[0-9]+
в сообщении фиксации и завершит работу, отличную от нуля, если он не совпадает. Такой сценарий также будет работать в Windows, если вы вызовете его с помощью bash или sh, поскольку все версии Git в Windows поставляются с некоторой реализацией оболочки.
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].