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