如何在收件人无需进行任何额外配置的情况下对 githook 进行版本控制和共享?

How to version and share githooks without recipients having to do any additional configuration?

我已经为我当前的项目制作了一个 githook,它在本地对我有用,现在我正试图与我的团队分享它。我们正在使用 Windows。我们的团队是不稳定和分散的,人们同时在许多不同的项目上工作,不能期望执行额外的存储库手动配置,所以,我需要 hook 才能在下一次拉取时开始为他们工作。我找到了几个教程,但它们都建议在收件人方面进行额外的配置。我需要避免这种情况。

P.S。理想情况下,我希望只将 .git/hooks 文件夹添加到回购协议中,但这在 GIT.

中似乎是不可能的

注意:这实际上更像是评论而不是答案(但太大而不能成为评论)。请参阅链接副本以获取实际答案。

需要某种配置,因为如果不需要,我可以通过克隆我控制的存储库这一简单行为让您的计算机做坏事。毕竟hooks可以运行任意命令1

就是说,如果您的用户配置了至少一个挂钩,那么那个挂钩 可以 使用 Git 来获取和安装更多挂钩。因此,选择一个 运行 的挂钩,让您的用户对其进行配置,然后让他们 运行 一个 运行 那个挂钩的 Git 操作。那一个钩子就可以做其他所有事情了。

你应该使用哪个钩子?这取决于你; the githooks documentation 告诉你哪些 Git 运行 是什么时候。最明显的候选者是 post-checkoutpost-mergepre-commit 钩子。

除此之外,就是一个small matter of programming


1旧版本 Git 中存在一个可怕的错误:它们允许人们存储名为 .GIT/hooks/post-checkout.gIt/hooks/post-merge。这对 Linux 系统没有有害影响,但在 MacOS 和 Windows 上引起了问题。现代 Git 检查并拒绝此类文件,无论是在进入存储库的途中还是在离开存储库的途中(以防邪恶巫师通过隐秘 and/or 诡计制作不良存储库)。