我最近更新了我的pre_commit.sample文件以在提交时运行 rubocop(重命名为 pre_commit)。
#!/bin/sh
#
# Check for ruby style errors
rake run:rubocop
Run Code Online (Sandbox Code Playgroud)
我错误地认为这会在拉取更改时在其他开发人员计算机上更新。我如何确保任何提取更改的人都更新了其 pre_commit 文件
谢谢
直到 git v2.9 为止,还没有办法在客户端更新 hooks。
\n\nGit v2.9 公开了新的配置来允许这样做:
\n\ngit config [--local] core.hooksPath ...\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n\n
core.hooksPath\n 默认情况下,Git 将在 $GIT_DIR/hooks 目录中查找您的钩子。将其设置为不同的路径,例如/etc/git/hooks,Git将尝试在该目录中查找您的钩子,例如/etc/git/hooks/pre-receive,而不是在$GIT_DIR/hooks/pre-receive中。该路径可以是绝对路径或相对路径。
\n\n
\n 相对路径是相对于运行钩子的目录而言的。如果您\xe2\x80\x99想要集中配置 Git 挂钩而不是在每个存储库上配置它们,或者作为更灵活和集中的替代方案,而不是在其中使用 init.templateDir,则此配置变量非常有用。 xe2\x80\x99已更改默认挂钩。
\n
正如我在 2016 年 5 月的“ Git commit hooks - 全局设置”和“更改默认 git hooks ”中提到的,Git 2.9 和 2.10 引入了git config core.hooksPath.
这似乎让OP感到困惑:
例如,如果我有一个现有的存储库,并希望所有其他拉取更改的开发人员都拥有更新的预提交挂钩,我将如何执行此操作?
在回购协议中/.git/hooks/pre_commit,我可以指出这一点吗?
更准确地说,在 git 存储库中,有一个/.git/hooks/pre-commit.sample,并且考虑到您希望所有pre-commit开发人员都有一个通用的钩子,因此您不应该创建然后指向本地存储库中的脚本。/.git/hooks/pre_commit
所有开发人员都必须引用与 一起使用的相同全球共享网络可访问路径 git config core.hooksPath \\a\common\shared\path:该设置需要在每个开发人员工作站上激活,无论是在其存储库(本地设置)内还是在其所有存储库(全局设置: git config --global core.hooksPath \\a\common\shared\path.
(我在这里使用Windows UNC 语法,请使用适合您操作系统的语法)
一旦它们都引用相同的路径,您就可以在那里设置预提交挂钩:
\\a\common\shared\path\pre-commit
Run Code Online (Sandbox Code Playgroud)
然后您可以更新该脚本(每个人都可以访问的脚本),让所有开发人员立即受益于更新。
| 归档时间: |
|
| 查看次数: |
2957 次 |
| 最近记录: |