gerrit和github.com之间的双向同步可能吗?

时间:2014-01-29 07:19:17

标签: git github replication gerrit

对于github.com私有存储库中的项目,我正在设置gerrit代码审查。

我正在使用gerrit的复制插件来保持gerrit存储库与github.com同步。

但如果有人提交(说commit-a)并直接推送到github.com,那么commit-a会在github.com上被覆盖,当gerrit执行复制过程时(因为它只复制了一些东西)在gerrit镜子里。)

但我想实现双向同步。有点像,每当推动gerrit,它必须检查github.com并用那里的新代码更新它的镜像然后继续合并。

这可能吗?

2 个答案:

答案 0 :(得分:4)

这是一个难题。您所描述的多主设置存在于许多地方,但依赖于所涉及的系统进行大量集成和构建以支持此功能。

我看到两个选项:

  • Gerrit和Github都必须能够互相交谈并允许服务器A上的git被锁定,而服务器B更新其ref。 B更新后,数据将复制到A,A将解锁。此功能不存在,可能永远不会。
  • 接收推送的服务器可能是乐观的,并希望并发更新不会发生。对于中等忙碌的服务器来说,大部分时间都不会发生这种情况,但如果确实发生了,那么必须有一个理智的恢复策略。如果并发检查是异步完成的,即如果不是不可能的话,恢复变得更加困难。 Gerrit发出信号"好的"在首先使用Github实际保护事务之前的推送。同步更新可以解决这个问题,但会对性能和可靠性产生不利影响。

答案 1 :(得分:1)

这可能不是您问题的直接答案,但如果您将Gerrit作为真相来源并且您只关心拉取请求,则可以使用github plugin将PR导入Gerrit更改。

当然,如果有人将提交直接提交给Github,那么这无济于事。

一般来说,我同意Magnus Bäck