我不明白如何为gitolite(非root安装)中的特定存储库创建post-receive挂钩
我的裸存储库包含一个网站,应该GIT_WORK_TREE=/path/htdocs git checkout -f在更新时将工作目录复制到docRoot()
在gitolite之前,我只是更新特定存储库的钩子.
Gitolite文档提到所有钩子都应该在这里,hooks/common所以我不明白它是如何工作的.
什么应该是钩子的名称,应该在哪里定位以及应该如何改变它的结构(如果它应该)?
2013年7月更新:接下来是gitolite V2(或'g2'),这是当时OP(2011年11月)使用的版本.
使用最新的gitolite 3.x更新2013年8月:您现在拥有官方特定的repo hook:
它基本上只是创建一个符号链接
<repo.git>/hooks指向内部的一些文件$rc{LOCAL_CODE}/hooks/repo-specific(除了gitolite-adminrepo)
所有钩子gitolite/hooks/common都在Gitolite管理的所有存储库中复制,详见钩子传播文档.
这意味着你的钩子脚本必须采取特定的操作,具体取决于执行所述钩子的repo.
你可以使用$GL_REPO变量(gitolite set并将其传递给它收到的任何git命令的所有脚本).
或者您可以使用gitolite服务器上注册的一些git配置,就像镜像挂钩一样.看post-receive.mirrorpush钩子.
该OP的Eyal [R在评论中补充说:
但是我仍然不明白它是如何完成的(我明白这
$GL_REPO用于确定我正在更新哪个仓库,但我错过了实际部分).
我创建了一个名为post-receive.testwith 的文件echo "test",将其放入$HOME/gitolite/hooks/common,运行gl-setup,从工作站运行推送 - 没有任何反应(没有"test"输出)
我回答说:
钩子应该
hook作为链接出现在gitolite服务器上的repo目录中,链接回到.gitolite/common/hook.请注意,它应该在$HOME/.gitolite/common/hook,而不是/gitolite.
OP确认缺少点是问题.
添加钩子的过程详见了gitolite中的钩子传播,以及它们在" 使用钩子 "中的用法.
| 归档时间: |
|
| 查看次数: |
6682 次 |
| 最近记录: |