我试图寻找解决方案。 但是,我不能。
我安装了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文件夹中,
我将一些文件commit
和push
修改为gitolite服务器。
推进效果很好。每个文件上传到gitolite的回购。
但是,挂钩似乎没有发生。没啥事儿。
在服务器的tmp目录中,没有创建文件。
我忘记了什么吗?
任何评论plz ...
答案 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
):
但系统位置也有效。
(/var/gitolite/hooks/common/
顺便说一下,OP选择了root method installation或package one,默认路径为/usr/local/bin
,/var/gitolite/conf
,{{ 1}})