对于 github.com 私有(private)存储库中存在的项目,我正在设置 gerrit 代码审查。
我正在使用 gerrit 的复制插件来保持 gerrit 存储库与 github.com 同步。
但是,如果有人提交(比如 commit-a
)并直接推送到 github.com,则当 gerrit 执行以下操作时,commit-a
会在 github.com 中被覆盖复制过程(因为,它只复制gerrit镜像中的东西)。
但我想实现2路同步。就像,每当向 gerrit 推送时,它都必须检查 github.com 并使用那里的新代码更新其镜像,然后继续 merge 。
这可能吗?
最佳答案
这是一个难题。像您所描述的那样的多主机设置存在于许多地方,但依赖于所涉及的系统的高度集成和构建来支持这一点。
我看到两个选项:
- Gerrit 和 Github 都必须能够相互通信,并允许在服务器 B 更新其引用时锁定服务器 A 上的 git。一旦 B 更新,数据就会复制到 A,并且 A 就会被解锁。此功能不存在,而且可能永远不会存在。
- 接收推送的服务器可能很乐观,希望不会发生并发更新。对于中等繁忙的服务器,大多数情况下不会发生这种情况,但如果确实发生,则必须有一个合理的恢复策略。如果并发检查是异步完成的,即如果不是不可能的话,恢复会变得更加困难。 Gerrit 在推送时发出“好的”信号,然后才真正确保与 Github 的交易安全。同步更新可以解决这个问题,但会损害性能和可靠性。
关于git - gerrit 和 github.com 之间可以进行双向同步吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424563/