ple*_*dge 29 java database flyway
我们最近开始使用功能分支来处理我们所处理的每个故事.这些是尽可能独立的,然后我们的项目经理决定哪些故事将构成一个版本.这意味着我们确实知道故事最初投入生产的确切顺序.
在Flyway有一个标准的处理方法吗?我已经阅读了FAQ,它讨论了对生产数据库的更改是如何线性的,这是正确的.但是我不确定团队成员如何决定在他们的功能分支工作时为他们的迁移提供哪些版本号.我们还需要在发布之前合并到集成分支和master时手动重命名迁移文件.
Tom*_*icz 26
您不能拥有与您将获得的版本号相同的迁移scrtipts:
使用版本'xyz'找到了多个迁移(违规者:SQL ...)
这是我建议的一种解决方法:多个开发人员正在使用相同的版本,1.0但是说不同的功能.我想你正在使用一些问题跟踪器,为每个问题添加id,比如FOO-16.当开发人员处理该问题时,将调用迁移脚本V1.0.16__my_greatest_feature.sql.这种方式(假设每个功能/分支都有自己的问题)没有冲突.
另外我假设数据库迁移脚本是独立且不重叠的,但如果不是这种情况,那么在将所有内容合并到稳定版本时会遇到问题.
因此,在一个稳定的版本,你有几个空白迁移脚本,如:V1.0.16,V1.0.27,V1.0.101(如果FOO-16,FOO-27和FOO-101被选择) -迁飞不会在意.所有未达到稳定版本1.0(例如V1.0.35)的功能都应重命名为目标下一个主要版本(例如V1.1.35).
mad*_*fox 22
我见过的最好的方法是克服分支之间的版本问题以启用outOfOrder并使用时间戳作为版本号
默认情况下,大多数迁移框架选择使用整数为各个迁移添加前缀,如下例所示.当框架遇到尚未应用于当前数据库的迁移时,它将从第一次迁移开始,该迁移的前缀不在数据库中,并开始按升序应用它们.
当每个人都在同一个代码分支上时,这很有用.但是,一旦团队成员开始在自己的分支上工作,前缀冲突的可能性就会大大增加.
但是,如果您选择使用时间戳而不是整数为迁移添加前缀,那么即使跨分支,碰撞的可能性也几乎消失.例如,使用yyyyMMddHHmmssSSS等模式,上面的迁移现在看起来像......
上面的时间戳模式精确到毫秒.虽然高度精确的时间戳会导致难以读取的前缀,但前缀越精确,碰撞就越不可能.
为了获得最佳结果,您需要自动创建此时间戳,以便团队的所有成员都使用一致的格式
此外,请注意,Flyway还将时间戳前缀视为整数.这意味着如果您最初使用整数开始使用Flyway,那么您仍然可以在任何时候切换到时间戳.由于时间戳只是非常大的整数,因此第一个时间戳前缀迁移将在最后一个整数前缀迁移后应用.
取自此处稍作修改:http://www.jeremyjarrell.com/using-flyway-db-with-distributed-version-control/
| 归档时间: |
|
| 查看次数: |
8907 次 |
| 最近记录: |