【问题标题】:Run both local and global git hooks运行本地和全局 git 钩子
【发布时间】:2014-07-08 16:17:57
【问题描述】:

我有一个全局 git hook post-commit,它位于:

~/.git_templates/hooks/post-commit

我已经把它变成了全球性的

git config --global init.templatedir '~/.git_templates'

并使用git init 更新我的 git 项目的设置。

还有一个项目有自己的post-commit 挂钩:

~/src/git.repo/.git/hooks/post-commit

本地运行但阻止全局运行。如何实现两者都在提交后运行?

我想避免在本地提交后挂钩中添加命令。

【问题讨论】:

  • 你不能。你的 repo 是你的,他们的也是他们的,只有在没有明确的本地编码的情况下保持 repos 完全自包含才能保持这一点。
  • @jthill 很遗憾,因为有一些只与我自己相关的钩子的用例(例如,通过网络摄像头拍摄照片)与只能从本地运行的钩子挂钩空间(例如,强制执行某种代码风格的预提交挂钩)。我确实理解为什么仅将某些钩子保留在本地而不是全部是有意义的。我认为在钩子域的线上有一些东西会很好。无论如何,您可以参考您的主张的来源并将您的评论扩展到答案吗?尽管很不情愿,我很可能会接受它。

标签: git githooks


【解决方案1】:

可能的解决方法是:

  • 确保为所有用户部署全局挂钩
  • 修改您的全局挂钩以调用预先同意的脚本,用户可以根据需要设置该脚本。例如$GIT_DIR/hooks/my-post-commit

my-post-commit 不是标准的client-side hook 名称,所以它不会被 Git 自动运行。
只有你的全局钩子会,它会调用用户设置的客户端自定义脚本。

这并没有改变这样一个事实,即如果本地 $GIT_DIR/hooks/post-commit 确实存在,那仍然会阻止您的全局挂钩运行。

【讨论】:

    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 2011-05-09
    • 2018-06-16
    • 2010-12-20
    • 1970-01-01
    • 2013-01-06
    • 2014-03-01
    • 2012-11-02
    相关资源
    最近更新 更多