在gitolite中如何安装钩子

9

我已经阅读了所有关于钩子的文档, 类似的 问题大量的代码, 但是我无法追踪到我的过程中错误出现的位置。我需要在我的gitolite安装中(使用CentOS上的rpm包制作)安装一个简单的hook,所以我做了以下操作:

安装gitolite(一段时间以前):

  1. 安装rpm包
  2. # su - gitolite
  3. $ gl-setup /tmp/fabio.pub (作为gitolite用户)

现在安装钩子:

  1. ~gitolite/.gitolite/hooks/common中创建一个带有钩子代码的示例文件post-update,并对其运行chmod +x
  2. 这里所述一样再次运行gl-setup /tmp/fabio.pub

但是什么也没有发生,最新命令的退出状态为0,但是钩子文件没有链接到任何存储库中。那我的步骤有什么问题吗?我错过了什么吗?

额外问题:

  1. 如果我理解文档,我的步骤是正确的吗?即我每次更新任何钩子都应该运行gl-setup吗?
  2. 以这种方式安装共享钩子将在此gitolite安装下的每个存储库中安装,是吗?我可以手动将钩子安装为指向某个位置的符号链接或仅适用于给定存储库的可执行脚本吗?我应该在给定存储库的钩子文件夹中手动执行吗?我需要关注钩子冲突吗(即任何单个存储库的自定义钩子是否会阻止具有相同名称的任何其他共享钩子)?

不知道这是否重要,我的 gitolite 版本是 1.5.9.1

3个回答

1
在Gitolite v3中,您可以通过编辑.gitolite.rc中的LOCAL_CODE变量来选择放置钩子的位置。有关更多选项,请参见文件源(例如启用每个存储库自定义钩子)。
然后将钩子放入指定的目录中,使它们可执行并运行gitolite setup --hooks-only

0

你需要在目录中添加一个 update.secondary 钩子,然后使用 gl-easyinstall 重新部署。看看 gitolite 自带的更新钩子,你会发现它在接近结尾处调用了 update.secondary。如果你提供了这个钩子,它就可以工作。


我不需要更新钩子,所以我认为这不会解决我的问题。另外,我是从一个软件包安装的,所以我认为我的命令不是 gl-easyinstall 而是 gl-setup - Fabio
你需要在gitolite克隆中更新钩子,然后重新运行easy install脚本。你的钩子的目标是什么?大多数操作都是通过update钩子完成的。 - Adam Dymitruk
这是我需要的钩子:this is the hook I need。我无法运行gl-easyinstall,因为我没有本地克隆,而是使用包安装方法安装了gitolite。 - Fabio
我会从客户端重新安装。您的脚本可以调整为更新脚本。您的旧版本、新版本和参考规范将作为命令行参数而不是标准输入。这是一个简单的更改。如果您从客户端安装,更新钩子会更容易。 - Adam Dymitruk

0
我刚刚发现,如果我将我的挂钩示例复制到/usr/share/gitolite/hooks/common/中,它将被gl-setup符号链接。也许在这个包中,$GL_ADMINDIR变量由于某些原因没有设置。两个额外的问题仍然存在...

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