处理具有多个分支的项目,其中每个分支最终会合并回主分支,并且本质上是孤立的,以便开发新功能。
数据库,即 MS SQL Server,有一个共享架构,但是每个分支都会随着它的进展对架构进行更改。
我的主要问题是什么是处理从主分支到派生分支共享架构的好方法,以便对主分支所做的更改可以轻松合并到派生分支中,而无需在派生分支中进行新更改分支?
我已经成功地使用了以下方法,在版本控制和您的数据库中详细说明:
我经常听到这样的意见:“这与将对象定义脚本置于源代码管理之下有何不同?”。差异是巨大的,因为当您部署应用程序的新版本时,您不会简单地创建一个新数据库。大多数情况下,您的应用程序必须升级现有数据库,包括现有数据。这是一个至关重要的区别,您的升级步骤需要确保升级期间现有数据的完整性和一致性。一些操作在代码中是微不足道的(在表对象定义脚本中添加一个具有默认值的不可空列,完成),但实际上在实际部署时非常痛苦(表有 15 亿行,添加列会用完如果以“简单”的方式完成日志空间)。
这如何与分支一起工作:
请注意,这里没有涉及任何工具,没有魔法模式差异脚本,没有向导,也没有涉及右键单击生成脚本。这是一个 100% 开发人员驱动的过程,基于源代码(脚本)。许多人发现整个过程很复杂,但它确实有效。事实上,作为 SQL Server 用户,您已经在日常使用 SQL Server 中利用了这个过程的结果:SQL Server 本身使用了一个非常相似的数据库升级过程,而且正如您可能期望的那样,产品开发过程广泛使用分支和你提到的问题是一个非常现实的问题,必须解决。
顺便说一句,分支/集成实际发生的方式在源代码控制产品之间有所不同,我使用的是 perforce集成操作模式中熟悉的术语。