gitk和钩子脚本

时间:2016-03-15 09:20:19

标签: git githooks

我想部署一个钩子脚本来控制提交消息的格式。为此,我使用prepare-commit-msg脚本。

我想检查提交消息是否以3位数字开头。如果是这种情况,脚本将返回0,否则返回1

使用git命令时,它可以正常使用,但与gitk一起使用时则无效。当脚本返回1时,提交不会被删除。我也没有设法显示消息(解释为什么提交将中止的信息消息)。

有没有办法在gitk使用钩子脚本?

感谢。

PS:我使用的是git版本1.8.5.3

1 个答案:

答案 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

  

如果您使用gitkgit-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开始。