git push后的gitolite hook不起作用

时间:2012-03-13 05:33:57

标签: hook gitolite

我试图寻找解决方案。 但是,我不能。

我安装了gitolite。它运作良好。
我可以在本地机器上进行git克隆,也可以更改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目录中,没有创建文件。

我忘记了什么吗?

任何评论plz ...

1 个答案:

答案 0 :(得分:6)

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

  

update挂钩用于所有回购,对于gitolite的访问控制至关重要

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

  

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


最后,OP Jinbom Heo,而不是使用“gitolite hook chaining”,与另一个钩子一起去了:

  

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

文档“Where do I put my hooks”建议将其置于“用户”位置(~/.gitolite/hooks/common):

hook place

但系统位置也有效。

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