2014-10-29 119 views
16

我需要使用多个预先提交钩子脚本。不知道如何处理它们。是否应该将它们全部合并成一个大的预先提交脚本?如果不是,如何处理多个预先提交的脚本?处理多个预先提交钩子

+0

相同http://stackoverflow.com/questions/30104343/multiple-git-hooks-for-the-same-trigger – 2017-02-08 07:07:06

回答

19

是否应该将它们全部合并成一个大的预提交脚本?

是的,没有:你只能申报一个预提交脚本,因此该脚本应负责到:

  • 调用实际预提交脚本
  • 选择了一个为了使这些脚本被调用。

所以:

  • 一个预提交脚本
  • 调用多个脚本,每一个允许或没有(与他们的退出状态)提交继续。
+6

组织这种方法的一种方法是创建一个'pre-commit.d'目录,其中包含所有你想运行的脚本。然后,您的'pre-commit'脚本会按照上面的建议按顺序运行所有这些脚本。 – TomDotTom 2016-03-07 17:57:25

+0

@TomDotTom根据你的建议,我在https://bugs.chromium.org/p/gerrit/issues/detail?id=5999和https://github.com/tommarshall/git-good-commit /问题/ 19 – sorin 2017-04-13 18:54:35

9

您可以使用委托脚本,仅调用其他脚本(subhooks):

https://gist.github.com/carlos-jenkins/89da9dcf9e0d528ac978311938aade43

用法:

让您的建筑系统创建的Git的符号链接使用您想要参加的挂钩名称将目录挂接到此脚本。例如,pre-commit

那么该钩子将执行,按字母顺序排列,所有可执行文件你参加 与.d后缀钩型命名的文件夹下找到 (subhooks)。例如,pre-commit.d

怎么可能看:

.git/hooks/ 
|_ pre-commit -> ../../tools/git/multihooks.py 
|_ pre-commit.d/ 
    |_ 01-cpp_coding_standard 
    |_ 02-python_coding_standard 
    |_ 03-something_else 

这需要Python3,但你可以使用其他技术类似的东西来了。