【发布时间】:2014-08-27 11:10:06
【问题描述】:
我是一个包含多个模块(大约 30 个 jar)的大型 java 项目的一部分,并且对使用 flyway 来管理数据库迁移很感兴趣。
作为公司政策的一部分,与每个项目相关的迁移脚本存在于每个模块中,并且在迁移时被聚合以形成一个来自发布 --> 发布的大型 sql 脚本。 (例如构建 234 --> 298)。还值得注意的是,我们目前使用 CVS(强制 -_- face)并且正在寻找 git 作为替代品:)。
由于 Git 的分布式特性,考虑使用顺序版本号来命名 flyway 迁移脚本是违反直觉的。让我进一步离题...
场景
- 用户从主分支
A分支到他的功能分支B -
A的单独用户分支到他们自己的功能C - 有人向
B提交了一个脚本。让我们称之为script 1 - 其他人向
C提交了一个脚本。script 2 - 在某些时候,这些更改会被带到主分支中
现在,如果您还不能看到问题,那么将这些更改带入 master 的顺序是任意的。开发人员无法适当地对他们的脚本进行版本控制(假设团队之间没有就提交顺序进行通信)。 script 2 可以在某个时候引入、迁移,然后稍后引入 script 1 并放置在 script 2 文件之前就 flyway 脚本版本而言。
问题
当数据库已经迁移过去时,Flyway 如何管理“inserted”脚本?
这是我将当前系统转为使用 flyway 的唯一担忧之一,我们将不胜感激。
【问题讨论】:
标签: git database-migration flyway