2017-06-05 47 views
1

我们正在使用git流模型进行开发,并尝试整合liquibase来高效地管理数据库版本控制。问题出现在开发人员正在开发功能分支时,并且已经在其数据库和另一开发人员的数据库上执行了一个DB脚本,但它尚未成为任何发行版的一部分,因此尚未标记。现在该功能已经过测试并成为发行版的一部分,并且我们为变更集添加了标签并在生产中执行。使用GitFlow开发模型管理Liquibase

问题是如何回滚开发人员的机器所做的更改,因为当脚本执行时没有定义标签,当我们尝试更新它时,当前标签将显示错误“表已经存在存在”。

如何有效地通过liquibase管理这些条件?

回答

0

我们做的是不挂的Git或GitFlow什么,但对数据库本身:

每次执行数据库脚本的时候,它通过包装也将记录说在一个专用的表脚本执行完成的数据库。
这样,下次应用相同的脚本时,包装器将检测到它已被执行,并且不会再应用它。

这是一个product like Flyway已经做的实现(如在这个答案中,you can use both: Liquidbase and Flyway,他们seem to differ)。
问题是:这不能单独使用版本控制系统进行管理:您需要额外的工具来执行/控制数据库升级过程。

+0

那么,如何在给定的情况下处理我的情况呢?问题是脚本已经执行了一个变更集,而变更集并不是发布标签的一部分,现在,当它成为发行版的一部分时,我需要将变更集应用到适当的发布标签,最终失败。 –

+0

通常,您可以在发行版中添加第二个脚本,以修复第一个脚本的介绍 – VonC