当前正在使用
git config --global core.hooksPath ~/.git/hooks
为我所有的git项目配置全局挂钩。但是,如果这些项目包含挂钩,则它们不会运行。
我想运行全局挂钩以及项目挂钩。谢谢!
我认为唯一的方法是让全局挂钩检查是否存在相应的本地挂钩并运行它。
这不是一个完整的解决方案,因为除了命令行参数外,某些钩子(例如pre-push
)还接受标准输入。如果其中一个钩子消耗了标准输入,则另一个钩子没有机会。
为了从全局一个钩子中执行本地钩子,可以使用以下脚本片段:
pre-push
全局挂钩在进行提交的repo目录中运行,因此可以检查本地挂钩在if [ -e ./.git/hooks/commit-msg ]; then
./.git/hooks/commit-msg "$@"
fi
目录中是否存在。
请注意,如果您使用的名称与提交消息挂钩不同,则必须采用挂钩名称。