SVN trunk中有工作副本,代码为主线版本,而建立了分支为Branch,存储着客户需求的修改的代码,我针对不同的客户需求在branch上建立有分支,当客户的软件跑得较为稳定的时候,重新合并到trunk中,使得trunk的代码版本和branch的修改需求合并。
具体的做法是
(1)提交现有的分支端的代码,
(2)Switch到主线trunk端,
(3)在SVN中选择merge功能,以下是SVN合并功能的解释
被操作对象: 主干
From : 主干的 打出分支时的版本
To: 分支的 Head版本 (最新版本)
怎么理解这个 From 和 To 呢 ? 似乎跟我们的想当然不太一样:因为我们理解,把分支合并到主干,肯定是 From 分支,To 主干。怎么搞反了呢?
实际上, Svn 认为,我们要合并的,是从主干的某个版本开始,到分支的某个版本结束。两边的版本号实际上是一套系统,不会有重复。
(4)合并可以先TestMerge看一下会不会有冲突,有冲突可以通过SVN的提示来解决,
Mark as conflicted. I will deal wiht it later. --标记冲突,合并到主干解决冲突 Resolve the conflict by using my version of the file. --直接用主干的文件覆盖,分支修改无效 Resolve the conflict by using the incoming of the file. --直接用分支修改覆盖主干,以分支为准 Let me edit the file with conflict markers inserted. --直接编辑冲突,编辑完保存,选择yes保存。 Launch a graphical conflict resolution editor.--直接比对文件,修改冲突,点击保存。选择yes解决冲突
(5)合并后可以可以看到新的分支示意图
原来的trunk就会在branch分支合并后继续更新,示意图好像没有显示线段来连接回trunk,不过代码上已经合并到了分支的功能代码,就可以继续做新的开发了。