跟踪.git/hooks中钩子的变化

Han*_*ans 48 git githooks

有没有办法跟踪git hook的变化?我有三个钩子只出现在我的机器上,而不是当我的其他开发人员拿到时.试图git add不起作用.

Bri*_*per 44

http://benjamin-meyer.blogspot.com/2008/10/git-hooks.html

.git/hooks目录中的文件不是存储库的一部分,因此不会跟踪它们.解决方法是在存储库的顶部放置一个git_hooks目录,就像在Arora中完成一样,并在克隆时将符号链接.git/hooks挂到git_hooks.这样,钩子将成为项目的一部分,受到版本控制,并且每个人都可以访问.

  • +1精彩提示 - 只需记住符号链接,但看到git_hooks目录应该是一个很好的提醒... (3认同)

Phi*_*ler 14

我意识到这个问题已经有好几年了,但是我觉得这对于像我这样的旅行者来说需要说清楚:钩子没有被设计跟踪!布莱恩的答案是有效的,但与此相关的是你有效地信任你正在使用的其他人不要将恶意代码放入存储库,然后你的钩子就会毫无疑问地执行; 这是安全漏洞的定义.

  • 我一直在运行 `rake spec`,并且相信我不会与一些将 `system("rm -rf / --no-preserve-root")` 放在 Rakefile 中的精神病患者一起工作。我看不出相信我的合作者没有向 git 钩子提交恶意代码有什么不同...... (3认同)
  • 我了解检入存储库中的代码可能是恶意的。我已经运行了单元测试,该单元测试在我的仓库上运行了FileUtils.rm_rf(“。”)`,并彻底清除了本地树(并且很容易就破坏了我的主目录)。我的观点是,git-hooks的特权不比我每天运行的回购中的其他成千上万行代码中的任何其他特权高。所有这些都有破坏我一天的能力。您能解释一下git hooks与我的单元测试框架和测试之间的根本区别吗? (3认同)
  • 好点子!但是这可以通过将这个`git_hooks`目录放在完全独立的项目中来解决,并且只允许回复给那些有足够知识且负责变更的人. (2认同)
  • @PhilipAdler:我不是说你应该只拉代码!我只是指出"只拉"操作不会触发git钩子.因此,您可以在复制之前自由检查挂钩的内容,而不会有任何风险.但是之后可以修改钩子.所以将它们联系起来似乎很 但是,在您之前检查之前,复制并不存在风险. (2认同)

小智 6

恢复这个旧线程,你可以有一个单独的版本控制目录,其中包含你的钩子,然后使用git config core.hooksPath来定位该目录。

  • 那么如何确保团队中的任何人在提交代码之前都进行此配置? (3认同)
  • @PageNotFound 您将说明放入项目的自述文件中,并将 linting 步骤添加到管道中的某个阶段,以防有人忘记,在构建失败时会提醒他们。并不理想,但在实践中效果很好。 (2认同)