使用要素分支时如何使用Flyway


问题内容

最近,我们开始针对我们处理的每个故事使用功能分支。它们尽可能独立,然后由我们的项目经理决定由哪些故事组成发布。这意味着我们确实知道故事最初制作的确切顺序。

在Flyway中是否有处理此问题的标准方法?我已经阅读了FAQ,它讨论了如何对生产数据库进行的更改是线性的,这是正确的。但是,我不确定团队成员在功能分支上工作时如何决定要进行迁移的版本号。另外,在发布之前合并到集成分支和主服务器时,我们将需要手动重命名迁移文件。


问题答案:

您不能使用与版本号相同的迁移脚本:

发现了多个使用’xyz’版本的迁移(违规者:SQL …)

我建议采用以下解决方法:多个开发人员正在使用相同的版本,例如,1.0但功能不同。我猜您正在使用一些将每个事件的ID添加到ID的问题跟踪器,例如FOO-16。当开发人员解决该问题时,迁移脚本称为V1.0.16__my_greatest_feature.sql。这样(假设每个功能/分支都有自己的问题),就不会发生冲突。

我还假设数据库迁移脚本是独立且不重叠的,但是如果不是这种情况,则在将所有内容合并到稳定版本中时会遇到问题。

因此,在一个稳定的版本,你有几个空白迁移脚本,如:V1.0.16V1.0.27V1.0.101(如果FOO-16FOO-27FOO-101被选择)
-迁飞不会在意。所有未使其成为稳定版本的功能1.0(例如V1.0.35)都应重命名以针对下一个主要版本(例如V1.1.35)。