gpt4 book ai didi

java - 使用功能分支时如何使用 Flyway

转载 作者:IT老高 更新时间:2023-10-28 21:08:10 32 4
gpt4 key购买 nike

我们最近开始为我们处理的每个故事使用功能分支。这些尽可能独立,然后我们的项目经理决定哪些故事将构成一个版本。这意味着我们不知道故事最初投入生产的确切顺序。

在 Flyway 中是否有处理此问题的标准方法?我已阅读常见问题解答,其中讨论了对生产数据库的更改如何是线性的,这是正确的。但是,我不确定团队成员在他们的功能分支上工作时将如何决定为他们的迁移提供哪些版本号。此外,当我们在发布前合并到集成分支和 master 时,我们需要手动重命名迁移文件。

最佳答案

我见过的克服分支之间的版本控制问题以启用 outOfOrder 并使用时间戳作为版本号的最佳方法

默认情况下,大多数迁移框架选择在单个迁移前加上一个整数,如下例所示。当框架遇到尚未应用于当前数据库的迁移时,它会从数据库中不存在前缀的第一个迁移开始,并开始按升序应用它们。

  • 1.0.0.1__add_customers_table.sql
  • 1.0.0.2__add_email_address_column_to_customers_table.sql
  • 1.0.0.3__add_orders_table_with_reference_to_customer_table.sql

当每个人都在同一个代码分支上时,这很有效。但是,一旦团队成员开始在自己的分支上工作,前缀冲突的可能性就会急剧增加。

但是,如果您选择使用时间戳而不是整数为迁移添加前缀,那么发生冲突的可能性实际上会消失,即使跨分支也是如此。例如,使用 yyyyMMddHHmmssSSS 之类的模式,上面的迁移现在看起来像……

  • 1.0.0.20130704144750766__add_customers_table.sql
  • 1.0.0.20130706132142244__add_email_address_column_to_customers_table.sql
  • 1.0.0.20130706151409978__add_orders_table_with_reference_to_customer_table.sql

上面的时间戳模式精确到毫秒。虽然高度精确的时间戳会导致前缀难以读取,但前缀越精确,冲突的可能性就越小。

为了获得最佳结果,您需要自动创建此时间戳,以便团队的所有成员都使用一致的格式

此外,请注意 Flyway 还将时间戳前缀视为整数。这意味着,如果您最初使用整数开始使用 Flyway,那么您仍然可以随时切换到时间戳。由于时间戳只是非常大的整数,因此第一个时间戳前缀迁移将简单地应用在最后一个整数前缀迁移之后。

取自此处并稍作修改:http://www.jeremyjarrell.com/using-flyway-db-with-distributed-version-control/

关于java - 使用功能分支时如何使用 Flyway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9497035/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com