使用gitolite VREFs更新钩子

5
我正在尝试从gitolite v2迁移到v3。以前检查服务器端提交消息的方法是将检查放在repo特定的挂起中,即myrepo.git/hooks/update.secondary。
在gitolite v3中,他们建议将检查放在VREF中。文档有些混乱,我希望能够得到澄清。
我已经在/home/git/.gitolite.rc中添加了以下内容。
LOCAL_CODE                  => "$ENV{HOME}/.gitolite/our_hooks",

在我的our_hooks目录中,我创建了一个VREF文件夹,并将旧的update.secondary脚本放在里面。在我的gitolite-admin/conf/gitolite.conf文件中,我为我想要在其上执行脚本的存储库添加了以下内容:
repo myrepo
  RW = @my_developers
  - VREF/update.secondary = @my_developers

当我尝试推送时,我收到一个通知,说找不到VREF/update.secondary。如果我更改为:
repo myrepo
  RW = @my_developers
  - /home/git/.gitolite/our_hooks/VREF/update.secondary = @my_developers

我没有收到任何投诉,但是这个挂钩似乎根本没有运行。

我是否对如何使用gitolite来运行附加的更新检查一无所知?

2个回答

4
这方面的文档有些混乱,希望这篇文章能帮助其他人在gitolite v3中实现链式更新钩子。以上所有步骤都是正确的,缺失的部分是我的update.secondary脚本需要放置的位置。在gitolite-admin/conf/gitolite.conf中,配置应该如下所示:
repo myrepo
  RW = @my_developers
  - VREF/update.secondary = @my_developers

在GL_BINDIR目录中有一个VREF目录。将您的可执行update.secondary文件放置在该目录中。

GL_BINDIR是包含您运行的gitolite二进制文件的目录,以便运行:gitolite setup


1
谢谢。我在VREFs目录中使用了符号链接指向hooks/common中的update.secondary,然后在每个仓库中搜索并运行update.secondary。这应该是默认功能,我的看法是这样的。 - Evan Davey
但是我如何为每个项目运行单独的钩子?我如何从gitolite-admin存储库管理它?提前致谢。 - Serge Velikan

0

补充一下(被点赞的)OP nathasm答案,我在我的.gitolite.rc文件中使用LOCAL_CODE变量没有问题,就像“自定义gitolite”中的“备用位置”部分所提到的那样。

然而,我从未成功使用过环境变量。

换句话说,这是行不通的:

LOCAL_CODE                  => "$ENV{HOME}/.gitolite/our_hooks",

但这将会:

LOCAL_CODE                  => "/home/git/.gitolite/our_hooks",

使用完整路径意味着任何在/home/git/.gitolite/our_hooks/VREF中声明的VREF或钩子都将被识别

repo myrepo
  RW = @my_developers
  - VREF/update.secondary = @my_developers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接