对于 github.com 私有存储库中存在的项目,我正在设置 gerrit 代码审查。
我正在使用 gerrit 的复制插件来保持 gerrit 存储库与 github.com 同步。
但如果有人承诺(比如commit-a
)并直接推送到 github.com,commit-a
当 gerrit 执行复制过程时,它会在 github.com 中被覆盖(因为它只复制 gerrit 镜像中的内容)。
但我想实现2路同步。比如,每当向 gerrit 推送时,它都必须检查 github.com 并使用那里的新代码更新其镜像,然后继续合并。
那可能吗?
这是一个难题。像您所描述的那样的多主机设置存在于许多地方,但依赖于所涉及的系统的高度集成和构建来支持这一点。
我看到两个选择:
- Gerrit 和 Github 都必须能够相互通信,并允许在服务器 B 更新其引用时锁定服务器 A 上的 git。一旦 B 更新,数据就会复制到 A,并且 A 就会被解锁。此功能不存在,并且可能永远不会存在。
- 接收推送的服务器可能很乐观,希望不会发生并发更新。对于中等繁忙的服务器,大多数情况下不会发生这种情况,但如果确实发生,则必须有一个合理的恢复策略。如果并发检查是异步完成的,即如果不是不可能的话,恢复会变得更加困难。 Gerrit 在推送时发出“好的”信号,然后才真正确保与 Github 的交易安全。同步更新可以解决这个问题,但会损害性能和可靠性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)