问题:如何处理具有缓慢提交/gerrit 的顺序数据库迁移脚本。
设置如下:
- 数据库表的持续开发是通过添加具有顺序名称的文件(12.sql、13.sql、14.sql 等)来完成的
- 在数据库中设置了版本号
- 迁移工具根据文件检查版本,以查看是否有未处理的数据库迁移
这种方法的主要问题(否则效果很好)是,当两个开发人员同时添加迁移脚本时,他们中的最后一个提交将发生合并冲突。在 subversion 中(我们一直使用到现在),这是一个树冲突,提交者通过还原该文件并使用新文件名添加它来处理,作为最后一个操作。由于我们在主干上使用了这些东西,他们通常会设法修复文件名作为最后的快速操作。
现在我们正在迁移到 git,冲突将改为在文件中显示为差异,这使得分离两个提交的文件(它们可能是不同提交包的一部分,以及其他文件)变得更加棘手。此外,由于我们使用 gerrit 进行代码审查,因此在将文件推送到主 git 存储库之间会有延迟,因此时不时会出现这种情况:
- 你推送一个迁移
- Gerrit 在代码审查后发生冲突
- 您通过重命名文件来解决冲突,并推送新的提交(必须重新审查)
- 在代码审查之前,有人设法进行了新的迁移,因此 Gerrit 再次发生冲突
- 您通过重命名文件来解决冲突,并推送新的提交(必须重新审查)
- 从 4 开始重复,直到你幸运并且 Gerrit 成功提交迁移。
解决这种情况的最佳方法是什么?