由于我的免费帐户在GitHub上的空间不足(是的,我正在考虑升级),我正在 Gitorious 上设置新的git存储库(另请参阅GitHub 与 Gitorious)。GitHub 的一大特色是提交后挂钩,它允许我通知(也很棒的)CIA 网络......
但是,我一直无法找到 Gitorious 是否支持这样的钩子......所以,我想询问在 CIA 网络上为 Gitorious 托管的 git 存储库获取提交消息的最佳实践。
更新:使用辅助机制触发 CIA 提交消息的解决方案不是我想要的。
Gitorious 正在获得 web hook 支持。它目前在 gitorious.org 上运行,但没有用于将它们添加到存储库的 UI;这样做的原因是,提交数据的 JSON 表示形式仍然可能会发生一两次更改,因此应该配置一个 beta 功能。
任何愿意编写集成代码(处理 gitorious 的网络挂钩请求)的人,请发送电子邮件至 gitorious.org 的支持人员,我们将为您的存储库设置集成
KDE 项目在那个线程中有一个类似的问题,还有一个有趣的替代方案:
它不必在
gitorious.org机器上运行。至少,不适用于电子邮件/CIA/RSS/任何报告这就是我们的旧
git-p4钩子在办公室的工作方式:
p4 机器发送一个UDP带有修订号的数据包。另一台机器抓住了它并进行了导入。(该值被丢弃)我们也可以这样做:
gitorious.org机器发送一个数据包,其中UDP包含已更改的分支及其新的SHA-1.- 另一台机器获取并生成提交日志。
最坏的情况是有人因为UDP丢包而被遗忘。就像我说的,这适用于报告——适用于任何由
post-receive钩子运行的东西。
对于任何需要pre-receive钩子的东西(实际上是pre-update,但 Git 中的名称是错误的),它必须在他们的服务器上运行。
我目前的解决方法是建立一个 loal 存储库(称为 CIA)并始终通过一个小 shell 脚本推送:
#!/bin/bash
set -e
git push origin master
git push cia master
在本地 CIA 存储库中,我安装了http://cia.vc/clients/git/ciabot.bash以向 CIA 发送电子邮件。
与其直接推送到 Gitorious,不如推送到您已配置的本地存储库(在其 post-receive 挂钩中)以将所有内容推送到您的 Gitorious 存储库并通知 CIA。
Gitorious 支持“Web Hooks”: http: //gitorious.org/gitorious/pages/WebHooks
这需要更多的努力,因为它需要您设置一个 Web 服务器来接收钩子 API 调用。