【问题标题】:gitolite hook after git push doesn't workgit push 后的 gitolite 钩子不起作用
【发布时间】:2012-03-13 05:33:57
【问题描述】:

我试图搜索以找到解决方案。 但是,我不能。

我安装了 gitolite。而且效果很好。
我可以在本地机器上 git clone,也可以更改 gitolite-admin repo。

但我想使用 gitolite 挂钩。 遵循本手册

http://sitaramc.github.com/gitolite/hooks.html

自定义挂钩

如果您愿意,您可以提供自己的自定义挂钩脚本。安装 gitolite 像往常一样,然后:

转到服务器上的 ~/.gitolite/hooks/common 并放置你的新钩子 现在再次运行“gl-setup”您可以使用此过程进行安装 新的钩子以及更新你以前的钩子 已安装。

所以我尝试挂钩一些基本的 shell 脚本。

我把 bash shell 脚本放在了

~/.gitolite/hooks/common

并命名为

update

更新脚本文件的所有者是 git,并且是可执行的。 shell脚本是这样的..

#!/bin/bash
touch /tmp/$GL_REPO

然后我执行

gl-setup mypubkey.pub

然后, 在我的本地 git 文件夹中, 我将一些文件 commitpush 修改为 gitolite 服务器。 推送效果很好。每个文件上传到 gitolite 的仓库。 但是,挂钩似乎没有发生。没啥事儿。

在服务器的 tmp 目录上,没有创建文件。

我是不是忘记了什么?

任何cmets请...

【问题讨论】:

    标签: hook gitolite


    【解决方案1】:

    您应该意识到(来自您在问题中提到的“using hooks”页面=:

    update 钩子用于所有 repos,对 gitolite 的访问控制至关重要

    换句话说,您不能直接使用“更新”脚本。
    您必须使用 gitolite 的“hook chaining”功能,以便在 gitolite 之后调用您自己的更新钩子

    要运行您自己的“update”挂钩,只需将其放入名为 update.secondary 的文件中并将其安装为挂钩即可。
    Gitolite 的 update 钩子将自动链接到它,注意传递与从 git 收到的原始 update 钩子相同的 3 个参数。


    最后,OP Jinbom Heo 没有使用“gitolite 钩链”,而是使用了另一个钩子:

    我把 post-receive 文件放在/var/gitolite/hooks/common/ 文件夹中。它有效。

    文档“Where do I put my hooks”建议将它们放在“用户”位置(~/.gitolite/hooks/common)下:

    但系统位置也可以。

    /var/gitolite/hooks/common/ 意味着,顺便说一下,OP 选择了root method installationpackage one,默认路径为/usr/local/bin/var/gitolite/conf/var/gitolite/hooks

    【讨论】:

    • 永远感谢 VonC。 ^^;你给了我一个决定性的暗示。我将接收后文件放在 /var/gitolite/hooks/common/ 文件夹中。它有效。谢谢。
    • @JinbomHeo 非常棒。我已将您的解决方案包含在答案中以获得更多可见性,并添加了对相关文档的引用,以供其他人查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2010-12-20
    • 2012-05-11
    • 1970-01-01
    • 2014-06-15
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多