2012-03-13 80 views
2

我试图寻找解决方案。 但我不能。Git推后gitolite钩不起作用

我安装了gitolite。它运作良好。
我可以在本地机器上克隆克隆,并更改gitolite-admin回购。

但我想要使用gitolite挂钩。 按本手册

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

定制挂钩

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

到〜/ .gitolite /钩/通用服务器上,并把你的新钩子 有现在运行“GL-设置”按钮,您可以使用此过程来安装 新的挂钩以及更新您以前安装的挂钩 。

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

我把

~/.gitolite/hooks/common 

的bash shell脚本,并把它命名为

update 

更新脚本文件的所有者是混帐,和excutable。 shell脚本是这样的..

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

和我执行

gl-setup mypubkey.pub 

然后, 在我的本地文件夹的git, 我修改了一些文件,commitpush到gitolite服务器。 推送效果很好。每个文件上传到gitolite的回购。 但是,挂钩似乎不会发生。什么都没发生。

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

我忘记了什么吗?

任何评论PLZ ...

回答

6

应该认识到,(从“using hooks”页面,你在你的问题提=:

update钩在所有回购使用,是至关重要的gitolite的访问控制

换句话说,你不能直接使用“更新”的剧本。
必须使用gitolite的“hook chaining”的特点,为了 gitolite的一个后打电话给自己的更新挂钩

要经营自己的“update”挂钩,只是把它放在一个文件称为update.secondary并将其安装为挂钩。
Gitolite的update挂钩会自动链接到它,注意传递它相同的3个参数原始update钩子从git收到。


在年底,OP Jinbom Heo,而不是使用 “gitolite钩链”,去与另一个钩子:

我把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/var/gitolite/hooks

+0

谢谢VonC始终。 ^^; 你给了我一个决定性的提示。 我把post-receive文件放在/ var/gitolite/hooks/common /文件夹中。 ,它的工作原理。 谢谢。 – 2012-03-14 01:13:03

+0

@JinbomHeo优秀。为了提高可见性,我在答案中包含了解决方案,并添加了对相关文档的参考,供其他人查看。 – VonC 2012-03-14 06:49:56