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