[转载]分支在版本树中的应用(使用subversion) – 登山耐危路,踏雪耐危桥 – 博客园.
场景
项目已上线,需不断维护。要求加入全市统一的功能,并马上上线,功能已经开发并测试,目前正在修改一些小的bug。但是新需求在不断引入:修改周期长,由于新需求还未完全实现并测试,bug修正后无法马上发布新版本。
产品化的软件,可能会有多版本存在,其中部分代码需要不断同步。
这两种应用场景,都可以考虑建立分支版本,使用版本控制工具的自动合并功能,更好的实现配置管理。
基本概念
REVISION 修订版本号
HEAD 版本库中的最新版本
下面三个是本地路径:
BASE 如果发生本地修改,BASE版本就是本地未修改版本
COMMITEED 在BASE之前最后修改的版本
PREV 最后修改版本之前的版本,技术上也叫COMMITEED-1
拷贝–修改–合并方案
版本库和修订号
全局修订号,一个修订号对应一个版本树,commit之后产生全局修订号,本地工作拷贝为混合版本,update之后是本地工作拷贝为最新的全局修订号。
Commit之后进入混合修订版本。Pull push分离原则
常规工作方式:
svn import 导入项目到svn库
svn checkout 得到工作拷贝
建立分支
使用svn copy命令或工具创建
建立分支后的版本变化
分支合并
注意:每次合并,提交都建立日志。选择好合并到哪个工作拷贝
主干合并到分支
范围合并或者版本树合并(最后一个)
方法1:
指定主干版本的版本范围,此范围内被合并到分支
方法2
两个不同版本树合并
选择分支指定版本号(最后一次同步版本)到最新的主干版本直接版本,此版本范围内的版本被同步
解决冲突:使用版本库版本或者使用本地版本,或者编辑修改
分支合并到主干
Reintegrate brache或者不同版本树合并