GitLab服务器端挂钩没有运行 - 如何转发git-push

时间:2016-01-18 07:37:33

标签: git gitlab githooks

最近我在我的服务器上安装了GitLab(v8.3.3)并使用NFS安装了现有的存储库,代替了为我的gitlab组创建的存储库。

我想让GitLab显示我在GitLab Activity Feed中当前回购的所有活动,所以我检查了它是否正常工作(不是)。

我注意到我的旧存储库(不是由gitlab创建)只有钩子示例所以我用GitLab钩子替换它们(post-receive,pre-receive和update)。

现在,当我使用GitLab提供的路径克隆存储库(即git@gitlab.my_company.com:group/repo_name.git)然后推送 - 通过GitLab可以看到活动。
另一方面,当我通过直接链接克隆到repo(即ssh://<user_name>@192.168.12.34/path/to/repo_name.git)时 - 活动没有显示在仪表板/活动中。

我的问题:
如何使GitLab从两个远程路径更新Activity?
这是否与更改这些钩子有关?

编辑: 我刚注意到我的git repo在一台服务器上而我的GitLab在另一台机器上。钩子目录是符号链接的,因此原始的git服务器钩子目录是一个指向无处的链接。

我可以将“git push”从一台机器转发到GitLab服务器吗?

2 个答案:

答案 0 :(得分:1)

我想说你必须安装一个你可以从authorized_keys文件中指出的脚本。它必须检查传递给它的命令并运行与git用户运行相同的gitlab-shell,以防它是git命令。

通常,你在ssh上的git命令不能在gitlab shell中运行,而是在标准的git命令中运行。

答案 1 :(得分:1)

理想情况下,从现在开始,您只能使用GitLab服务器来管理回购,因为它将管理用户及其密钥。虽然你可以在你的repo服务器上设置一个post-receive hook,它将redis作业添加到数据中(这是触发活动的原因,而且这里几乎都是你缺少的)你不能轻易地归功于没有与gitlab服务器相同的key-id的正确用户。您可以在GitLab中创建一个系统用户,您始终可以将其推送到您的repos服务器。但这可能不太理想。