我想部署一个钩子脚本来控制提交消息的格式。为此,我使用prepare-commit-msg
脚本。
我想检查提交消息是否以3位数字开头。如果是这种情况,脚本将返回0
,否则返回1
。
使用git
命令时,它可以正常使用,但与gitk
一起使用时则无效。当脚本返回1
时,提交不会被删除。我也没有设法显示消息(解释为什么提交将中止的信息消息)。
有没有办法在gitk
使用钩子脚本?
感谢。
PS:我使用的是git版本1.8.5.3
答案 0 :(得分:0)
如Git client-side hooks中所述,prepare-commit-msg
挂钩在提交消息编辑器启动之前运行 ,但在创建默认消息之后。
所以这不符合您的要求。最好使用commit-msg
挂钩。
commit-msg
挂钩有一个参数,它又是包含开发人员写的提交消息的临时文件的路径。
如果此脚本退出非零,Git将中止提交过程,因此您可以在允许提交之前使用它来验证项目状态或提交消息。
之后,这取决于您的脚本的编写方式:请参阅“How do I prompt the user from within a commit-msg hook?”,特别是this answer:
如果您使用
gitk
或git-gui
,则无法提示,因为您在“exec < /dev/tty
”行上收到错误。
您可以使用hook bash脚本中定义的函数替换它
function f_askContinue {
local myQuestion=$1
while true; do
read -p "${myQuestion} " -n 1 -r answer
case $answer in
[Yy]* ) printf "\nOK\n"; break;;
[Nn]* ) printf "\nAbandon\n";
exit;;
* ) printf "\nAnswer with Yes or No.\n";;
esac
done
}
f_askContinue "Do you want to continue ?"
(根据你想在控件中实现的逻辑进行调整)
那可以从gitk开始。