Git全局挂钩和项目挂钩

时间:2018-07-04 17:10:43

标签: git githooks

当前我正在使用

git config --global core.hooksPath ~/.git/hooks

为所有git项目配置全局挂钩。但是,如果这些项目包含挂钩,则它们不会运行。

我想运行全局挂钩以及项目挂钩。谢谢!

2 个答案:

答案 0 :(得分:3)

我认为唯一的方法是让全局挂钩检查是否存在相应的本地挂钩并运行它。

这不是一个完整的解决方案,因为除了命令行参数外,某些挂钩(例如pre-push)还接受标准输入。如果其中一个钩子消耗了标准输入,则另一个钩子没有机会。

答案 1 :(得分:2)

为了从全局钩子中执行本地钩子,可以使用以下脚本片段:

if [ -e ./.git/hooks/commit-msg ]; then
    ./.git/hooks/commit-msg "$@"
fi

全局挂钩在提交的repo目录中运行,因此可以检查本地挂钩.git中是否存在本地挂钩。

请注意,如果使用的名称与提交消息挂钩不同,则必须采用挂钩名称。