由于我的免费账户空间即将用完(是的,我正在考虑升级),所以我正在GitHub上设置新的git存储库,并在Gitorious上查看(另请参见GitHub vs Gitorious)。GitHub的一个很棒的功能是提交后挂钩,可以让我通知(同样伟大的)CIA network……但是,我一直无法找到Gitorious是否支持这样的挂钩。因此,我想询问有关在托管在Gitorious上的git存储库中显示提交消息的最佳实践。更新:使用第二机制触发CIA提交消息的解决方案不是我要寻找的。
Gitorious即将支持Web Hook。它目前正在gitorious.org上运行,但没有UI来添加到您的存储库中;原因是提交数据的JSON表示仍可能发生一两个更改,因此应将其配置为beta功能。
如果有人想编写集成代码(处理gitorious的Web Hook请求),请发送电子邮件至support@gitorious.org,我们将为您的存储库设置集成。
它不一定要在
gitorious.org
机器上运行。至少对于电子邮件/CIA/RSS或其他报告而言是如此。我们以前在办公室中使用的旧的
git-p4
钩子就是这样工作的:
p4机器发送带有修订号的UDP
数据包。另一台机器捕获该数据包并进行导入。(该值被丢弃)我们可以做同样的事情:
gitorious.org
机器发送带有更改的分支及其新的SHA-1
的UDP
数据包。- 另一台机器获取并生成提交日志。
最坏的情况是由于丢失UDP
数据包而遗漏某些人。正如我所说,这适用于报告——任何由
post-receive
钩子运行的东西。
对于需要pre-receive
钩子(实际上是pre-update
,但Git中的名称是错误的)的任何内容,它都必须在他们的服务器上运行。
我的当前解决方案是设置一个本地仓库(称为CIA),并总是通过一个小的shell脚本进行推送:
#!/bin/bash
set -e
git push origin master
git push cia master
不要直接推送到Gitorious,而是推送到一个本地仓库,你需要在它的post-receive hook中配置,使其可以将所有内容推送到你的Gitorious仓库并通知CIA。
Gitorious支持“Web Hooks”:http://gitorious.org/gitorious/pages/WebHooks
这需要一些额外的工作,因为它要求您设置一个Web服务器来接收钩子API调用。