我想部署一个钩子脚本来控制提交消息的格式。为此,我使用prepare-commit-msg脚本。
我想检查提交消息是否以3位数字开头。如果是这种情况,脚本将返回0,否则返回1。
它可以很好地与git命令一起使用,但在与gitk一起使用时就不行了。当脚本返回1时,提交不会中止。我也没有设法显示消息(解释为什么提交将被中止的信息消息)。
有没有办法在gitk中使用钩子脚本
谢谢。
PS:我使用git版本1.8.5.3
发布于 2018-06-13 13:28:17
正如在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中发挥作用。
https://stackoverflow.com/questions/36007049
复制相似问题