【发布时间】:2012-08-22 01:35:28
【问题描述】:
我查看了.NET Migrations Engine 上的所有选项,发现使用 Rails 风格迁移的引擎是最有趣的,主要是因为它们以与数据库无关的方式编写,可以轻松用于不同的数据库平台。
然而,我看到了一个明显的问题,他们似乎都没有开箱即用地解决:源代码控制分支。
情景
- 功能 1 正在 branch1 上开发,并在名为 column1 的表中添加一列
- 功能 2 正在 branch2 上开发,并在名为 column2 的同一表中添加一列
- 1.1 版已包含功能 2,但功能 1 尚未完成
- 功能 1 已完成并合并到主干
- 发布了 1.2 版,但是进入主干的新 column1 字段是版本 1(直接在代码中与 1.1 版绑定),因此在迁移时不会在数据库中更新
使用Migrator.NET 等工具,问题似乎是迁移版本与实际软件版本有关,而不是 SCC 提交。但是,该属性必须添加到源代码管理中的代码中。我见过使用日期而不是版本的示例,但这似乎比增量版本控制更能解决手头的问题。
我找到的最接近答案的是Liquibase FAQ page,但是对于 .NET 中的 Rails 样式框架(即使在 Rik Migrations 中,其结构类似于liquibase 更改日志文件):
Liquibase 是否适用于分支机构? 可以。由于每个更改都是独立的,因此在不同的数据库中进行的数据库更改 分支,然后合并将在下次运行 Liquibase 时运行。你 运行语句的顺序可能会遇到问题,但是 您可以通过重新排序更改日志轻松解决您遇到的任何问题 文件。
处理这个问题的典型方法是什么?
如果有什么不同,我将使用 Git 进行源代码控制。注意我已经看到了标题为Database migrations in a complex branching system 的帖子,但它并没有真正提供答案。
【问题讨论】:
标签: .net git database-migration rails-migrations