在版本控制上更新pre_commit挂钩文件

时间:2016-11-11 14:49:13

标签: git githooks

我最近更新了我的pre_commit.sample文件,以便在提交时运行rubocop(重命名为pre_commit)。

#!/bin/sh
#
# Check for ruby style errors
rake run:rubocop

我错误地认为,在提取更改时,这会在其他开发者计算机上更新。如何确保提取更改的任何人更新了pre_commit文件

由于

2 个答案:

答案 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

然后您可以更新该脚本(每个人都可访问的脚本),允许所有开发人员立即受益于更新。