假设有一个源代码控制系统,当产品(在本例中为安装程序版本 1)发布时。
发布工程师会对“发布分支”的状态进行快照,然后为下一个版本(在本例中为安装程序版本 2)相应地重命名它。
开发人员将继续在具有相同位的类似分支(Dev 分支)中编写代码,直到发布日期。
从此“Release/Dev”分支创建一个 HotFixes/Patches 分支,并从“Hot Fixes or Patches”分支发布补丁。
这些补丁将包含确定安装先决条件的逻辑。例如“patch1-version1”需要“Release version1”...“patch2-version1”可能只需要“patch1-version1”...等等。
当您准备好创建第二个版本“Release Version2”时,Release 分支将被相应命名,并在“Hot Fixes or Patches”分支中包含来自“Release Version1”+“所有修复”的所有更改。
这个新版本需要逻辑来卸载以前的版本并安装新版本。
现在,从最新的“发布分支”创建一个新的“热修复”分支,或者将更改简单地带到先前创建的“热修复”分支和“发布版本 2”的任何新补丁现在应该已经更新了逻辑,只允许安装新的要求……那些与“发布版本 2”有关的要求。
例如,“Patch1-ReleaseVersion2”将需要“Release Version2”的存在......类似地,“Patch2-ReleaseVersion2”可能需要“Release Version2”加上第一个发布的补丁,或者只是第一个补丁的存在发布,因为基本版本(Release Version2)也必须在那里。
因此,鉴于此标准,“patch1,2,3...n-ReleaseVersion2”不应该安装在任何具有“Release Version1”+零/多个补丁的服务器上,因为补丁安装程序中的逻辑不会(或不应该)允许这样的事情。