自从系统发布到现场使用之后,就有几个分支同时运行。最近对相关问题有一些思考,在此总结一下:
1、版本
确定要做定制需求开发的时候,是3月15日,确定下来第一批需求的交付时间,是4月10日。当时主版本还在TR5阶段,而且版本还很不稳定。
在这种情况下,在主版本上做定制需求的开发是不合适的。因为:
首先,主版本一直在修改问题合入代码,而定制需求开发也需要合入大量代码,这必定会有冲突。可能造成主版本无法按时转测试,也可能造成定制需求的延误。
其次,以当时的版本状况,主版本不可能在4月10日发到一线使用,所以即使在主版本开发,也无法把主版本发出去。
因此唯一的选择,就是在主版本上拉出分支。主版本继续修改问题,在分支版本上开发定制需求,在4月10日,将分支版本发到一线。
最终是从B080拉出分支SPC200T和SPC300T,分别进行捷克和上海2个局点定制需求的开发。
----------------------------------------------->主版本(B080)
----------------------------------------------->SPC200T(基于B080)
----------------------------------------------->SPC300T(基于B080)
接下来在4月10日,第一批定制需求发到一线,需要进行第二批需求的开发,计划在5月10日以升级包的方式发布到一线
同时,这时候还有一件事情,对最终的措施有重要影响:即每周需要针对一线发现的问题出补丁。
为什么这件事情很有影响呢,因为如果说当时的策略是,一线发现的问题,在5月10日的升级包里一起解决的话,那么我们就可以直接在SPC200T和SPC300T上修改,同时进行定制需求的开发,然后在5月10日一起提供升级包
或者甚至当时的策略是,一线发现的问题,在用主版本做版本替换的时候解决就可以的话,那么连SPC200T和SPC300T都不需要改了,这2个分支只需要做定制需求开发,一线发现的问题在主干上修改就可以了
既然确定是每周要出补丁到一线,那就没法直接在SPC200T和SPC300T上进行问题修改了,否则的话补丁内容就会与第2批定制需求的内容相互冲突。
所以这时候,就在SPC200T和SPC300T上又拉了一个短暂的分支。在SPC200T和SPC300T上继续做第2批定制需求的开发,在分支上出补丁到一线
----------------------------------------------->主版本(B090)
----------------------------------------------->SPC200TB011
------------------------------->SPC200T分支(基于SPC200TB011)
----------------------------------------------->SPC300TB011
------------------------------->SPC300T分支(基于SPC300TB011)
然后在5月10日发布第2批定制需求的时候,把SPC200T分支和SPC300T分支上修改的问题,都合入了SPC200T和SPC300T,连同第2批定制需求一起发到一线。SPC200T分支和SPC300T分支销毁
这时候版本线又恢复成这样:
----------------------------------------------->主版本(B110)
----------------------------------------------->SPC200TB021
----------------------------------------------->SPC300TB021
这个时候主版本基本稳定,计划在6月上旬用主版本替换一线的分支版本,所以将SPC200T和SPC300T上的前2批定制需求代码合到了主干里。
但是在版本替换结束之前,还是需要出补丁支持一线,所以SPC200T和SPC300T还是需要保留
同时,要开始开发第3批(最后一批)定制需求了,出于同样的原因(不影响主干测试、不影响分支出补丁),又基于B110拉出一个分支SPC500T专门做第3批定制需求的开发,所以版本线变成下面这样:
----------------------------------------------->主版本(B110)
----------------------------------------------->SPC200TB021
----------------------------------------------->SPC300TB021
----------------------------------------------->SPC500T
这就形成了4个版本同时存在的情况:
主版本已经合入了前2批定制需求的代码,正在继续测试过TR5
SPC200T和SPC300T继续保留,为了出补丁支持一线,这条线上修改的问题,要同步合入到主干版本中
SPC500T专门进行第3批定制需求的开发
然后在6月上旬,用主版本替换掉一线的分支版本,到此时SPC200T和SPC300T就废弃了。接下来把SPC500T上的定制需求合到主版本上,基于主版本出升级包。然后将升级包发布到一线,SPC500T也废弃了。以后一线就只有一个版本,所有问题都只在主线上修改,版本线变成下面这样:
----------------------------------------------->主版本(TR5)
以上就是此次定制需求开发、收编、主版本过点这些活动背后的版本走向
2、分支
确定分支策略,一个很关键的因素是发布的计划。或者说,发布计划就是版本计划
一个分支等于一套代码,分支越多,维护成本就越高。所以分支的数量不能太多,存在的周期也不宜太长。拉出了分支以后要尽快地收编合入主干版本,减少维护的工作量
分支上的修改一定同步到主干上(可能是第一时间同步,也可能是晚一点同步),但是反之,主干上的修改,则不一定要同步到分支上。可以看作一个树形,比如下图:
----------------------------------------------->主版本(B090)
----------------------------------------------->SPC200TB011
------------------------------->SPC200T分支(基于SPC200TB011)
----------------------------------------------->SPC300TB011
------------------------------->SPC300T分支(基于SPC300TB011)
比如在SPC200T分支上发现一个问题,那除了要在SPC200T分支上修改(为了第一时间出补丁)之外,还需要在SPC200TB011和B090上同步修改,否则稍后替换的时候,修改过的问题就会被覆盖掉
但是如果是在B090上发现的问题,如无特殊情况,则不需要向下同步到SPC200TB011和SPC200T分支上
分享到:
相关推荐
### SVN分支管理多版本知识点详解 #### 一、引言 在软件开发过程中,随着项目的迭代更新,如何高效地管理不同版本之间的代码成为了项目管理中的一个重要环节。Subversion(简称SVN)作为一款广泛使用的版本控制...
### 版本管理与SVN学习总结 #### 版本管理基本概念 版本管理是一种用于跟踪文件或项目在不同时间点的变化的技术。它允许开发者在软件开发过程中保存多个版本的历史记录,以便随时回溯到之前的任何状态。版本控制...
首先,svn的核心概念主要包括版本号、基线、冲突和分支。版本号是每个文件或目录变更的标识,它反映了代码的演化历程。基线是项目的一个稳定状态,通常用于发布里程碑。冲突则发生在两个或多个开发者同时修改同一...
A155版本发布流程总结1 A155版本发布流程总结1是软件/插件服务器领域中的一个重要概念,以下是对该过程的详细解释: 版本分类 在A155版本发布流程中,版本分类是一个非常重要的步骤。根据不同的版本类型,版本...
在软件开发过程中,版本控制是至关重要的,而Git作为目前最流行的分布式版本控制系统,其分支管理机制在团队协作中扮演着核心角色。本规范旨在定义一套适用于大多数开发团队的Git分支流程,以确保代码的稳定性和开发...
2. 提交版本号:确保在正确的分支上提交版本,保持版本分支的清晰。 3. 空间检查:确认编译服务器有足够的空间(至少150GB),以避免因存储不足导致的编译失败。 4. 编译时间:与开发经理沟通,确保在合适的时间进行...
SVN分支与合并的总结 1.分支(branche)的创建。 1、分支创建是建立在主干上的。 2、创建分支前将整个porject_name检出到本地,然后主干(trunk) 。 3、右键 选择 分支/标记 。 4、然后,在至路径输入:/branches/...
### SVN分支合并经验总结 在软件开发过程中,版本控制系统如Subversion(SVN)是团队协作不可或缺的工具。其中,分支管理和合并策略是确保代码质量和维护项目稳定性的重要环节。本文将深入探讨在SVN中进行分支合并...
总结,TortoiseSVN的分支与合并功能是高效协同开发的关键。通过熟练掌握这些操作,开发者可以灵活地在多个分支之间切换,实现并行开发,同时保证主分支的稳定性。在实践中,理解并应用良好的分支管理策略对于项目的...
以下是对Git分支操作的详细总结: 1. **初始化Git仓库** 使用 `git init` 可以将当前目录初始化为Git仓库,这会在当前目录下生成一个 `.git` 子目录,用于存储Git的所有元数据。 2. **克隆远程仓库** `git clone...
- **Hotfix分支**:如果在正式发布的版本中发现了紧急的bug或问题,需要立即修复,则从Master分支创建一个Hotfix分支。 - **流程**:修复完成后,Hotfix分支会被合并回Master分支以及Develop分支,以确保未来的版本...
总结来说,CVS分支和合并操作是版本控制的重要环节,它需要开发者对代码变更有清晰的了解,以及在冲突处理上具备一定的判断和决策能力。通过Eclipse/MyEclipse的集成工具,我们可以更方便地管理代码分支,提高团队...
- 在完成合并操作后,可以通过查看版本分支图来验证分支是否已经成功合并到主干上。 - 在主干目录中,选择任意一个文件,右键点击“CVS”菜单下的“版本分支图”选项。 - 版本分支图会显示当前主干的结构,包括...
几乎每种版本控制系统都支持分支功能,但在Git中,分支的使用方式与效率达到了前所未有的高度。传统的版本控制系统在创建分支时,通常需要复制整个项目的代码库,这不仅消耗大量的存储空间,还可能导致较长的操作...
在Eclipse中通过Subversion (SVN) 创建分支是一种常见的版本控制操作。以下是具体的步骤: 1. **选择项目**: - 在Eclipse中打开您的项目。 - 右键点击您想要创建分支的项目,选择`Team` -> `Branch/Tag`。 2. *...
- **结构模式**:包括主干、版本分支(Version Branches)、标签(Tags)和开发分支(Development Branches)。 - **规则模式**: - **权限规则**:主干和版本分支的读写权限被冻结,开发分支对项目开发人员具有...
4. **大版本更新**:新功能在主干上开发完成后,如果需要进行一次大的升级,可以在主干上打上一个TAG作为大版本号,并基于此创建一个对应的分支,然后在分支上进行打包部署。 #### 三、Eclipse 下 SVN 分支/合并/...
版本控制服务器 CVS 的一些经验 版本控制服务器 CVS 是一个开放源代码的版本控制系统,广泛应用于软件开发过程中。以下是使用 CVS 服务器的经验总结: 多个工作目录 在使用 CVS 服务器时,可以在本地设置多个工作...
Git 分支是Git版本控制系统中的核心特性之一,它允许开发者在一个稳定的主分支上进行开发,同时还能通过创建多个分支来并行处理不同的任务。本文将详细介绍Git分支的使用方法,包括查看分支、创建分支、切换分支、在...