4

我在 Gitolite 的钩子手册中发现的唯一内容是:

如果你想添加自己的钩子,只要不是“更新”钩子就可以了。只需将其添加到 $HOME/.gitolite/hooks/common 并运行 gitolite setup。

但是,我还想跟踪对这些钩子所做的更改,如果需要,可以恢复到旧版本(审计功能被认为是使用 Gitolite 的一大优势)。所以,基本上,我期待hooks在我的 gitolite-admin 克隆中添加一个文件夹,然后将挂钩推送到服务器(就像你使用配置或添加公钥一样)。

这有意义吗?是否可以?

4

2 回答 2

4

这些钩子可以添加到您的gitolite-adminrepo ( gitolite-admin/hooks/common) 中并推送回 Gitolite 服务器。
所以它们是版本化的。(至少 Gitolite V2 是这样,我将不得不检查 Gitolite V3)


事实证明,它确实有效,除了OP Rijk报告:

问题是我的 conf 中的一个错误,它停止了安装程序。
注释掉该行,并且触发器已正确安装

这是我的这一行gitolite.conf

config hooks.showrev = "git log -1 --name-status --format='%%h (%%ad) ------------------------------%%n%%n%%B' %s". 

不知道为什么,但触发了以下错误:

FATAL: bad value 'git log -1 --name-status --format='%%h (%%ad) ------------------------------%%n%%n%%B' %s'. 

暂时把它注释掉,post-receive-email以后可能会重写脚本。


OP Rijk的当前解决方案:

我目前在 Gitolite v3 上对此的解决方案是:

  • 把东西放进去gitolite-admin/local-code/hooks/common
  • 然后在服务器上放置一个完整路径符号链接到$HOME/.gitolite/hooks/common.
于 2012-05-02T13:39:18.030 回答
3

如果您查看 src/lib/Gitolite/Conf.pm 中的代码,您会注意到如果值中有一个 UNSAFE_PATT 字符串,它会打印出“错误值”。

UNSAFE_PATT 看起来像这样(在 src/lib/Gitolite/Rc.pm 中): $UNSAFE_PATT = qr([`~#\$\&()|;<>]);

问题是您使用括号(以及 gitolite.conf 中的简单解析)

于 2012-06-28T17:20:53.597 回答