我最近更新了我的pre_commit.sample
文件,以便在提交时运行rubocop(重命名为pre_commit)。
#!/bin/sh
#
# Check for ruby style errors
rake run:rubocop
我错误地认为,在提取更改时,这会在其他开发者计算机上更新。如何确保提取更改的任何人更新了pre_commit文件
由于
答案 0 :(得分:4)
直到git v2.9,无法在客户端更新挂钩。
Git v2.9公开了新的配置,允许这样做:
git config [--local] core.hooksPath ...
core.hooksPath
默认情况下,Git将在$ GIT_DIR / hooks目录中查找您的钩子。将此设置为不同的路径,例如/ etc / git / hooks,Git会尝试在该目录中找到你的钩子,例如/ etc / git / hooks / pre-receive而不是$ GIT_DIR / hooks / pre-receive。路径可以是绝对路径也可以是相对路径 相对路径被视为相对于运行挂钩的目录。
此配置变量在您希望集中配置Git挂钩而不是基于每个存储库配置它们的情况下非常有用,或者作为一个更灵活,更集中的替代方案,在您拥有init.templateDir的情况下更改了默认挂钩。
答案 1 :(得分:2)
正如我在" Git commit hooks - global settings"和" change default git hooks" 2016年5月,Git 2.9和2.10引入了git config core.hooksPath
。
似乎是confuse the OP:
如果我有一个现有的仓库,并且希望所有其他开发人员提供更新的预先提交钩子,例如我将如何做到这一点?
在回购中有/.git/hooks/pre_commit
,我能指出它吗
更确切地说,在一个git仓库中,有一个/.git/hooks/pre-commit.sample
,并且考虑到你想要所有开发人员的共同pre-commit
钩子,你应该不< / em> make然后指向本地仓库中的/.git/hooks/pre_commit
脚本。
所有开发人员都必须引用与git config core.hooksPath \\a\common\shared\path
一起使用的相同gobal共享网络可访问路径:需要在每个开发人员工作站上激活该设置,无论是在其repo(本地设置)还是所有repo(全局)设置:git config --global core.hooksPath \\a\common\shared\path
。
(我在这里使用Windows UNC syntax,使用适合您操作系统的那个)
一旦他们都引用了相同的路径,你就可以设置预提交钩子那里:
\\a\common\shared\path\pre-commit
然后您可以更新该脚本(每个人都可访问的脚本),允许所有开发人员立即受益于更新。