svn merge

来源:互联网 发布:淘宝为什么认证不通过 编辑:程序博客网 时间:2024/05/21 07:04

svn merge的思想是diff and apply


分支合并

1)从分支合并到主干

分支开发结束之后,往往需要合并回主干去测试、发布,但分支和主干可能有很多冲突的地方,在合并时经常需要手工解决。

被操作对象:主干

From:主干的打出分支时的版本

To:分支的Head版本(最新版本)

 

怎么理解这个From和To呢?似乎跟我们的想当然不太一样:因为我们理解,把分支合并到主干,肯定是From分支,To主干。怎么搞反了呢?

实际上,Svn认为,我们要合并的,是从主干的某个版本开始,到分支的某个版本结束。两边的版本号实际上是一套系统,不会有重复。我们从TortoiseSVN Help中也能找到证据:

 

[xhtml] view plaincopy
  1. If you are using this method to merge a feature branch back to trunk, you need to ........  
  2.   
  3. In the From: field enter the full folder URL of the trunk. This may sound wrong, but remember that the trunk is the start point to which you want to add the branch changes. You may also click ... to browse the repository.   
  4.   
  5. In the To: field enter the full folder URL of the feature branch.   

2)从主干合并到分支

试想这样的情况:一个项目里面,要独立出来一个子项目,需要单独发布版本,用到了基础框架代码,而基础框架在主干中不断修改完善,这就需要从主干合并到分支。

被操作对象:分支

From:分支的第一个版本(最旧版本)

To:主干的Head版本(最新版本)

相当于从分支的第一个版本开始一直到主干最后一个版本结束合并之后,替换分支。

3)从分支合并到分支

有这样的需求:一个项目中有很多分支,这些分支需要分期上线,有多个工作并行,但每一期之间不能相互影响,这就可以打出几个tag(也是分支),从主干copy而来。其他主干根据排期分别合并到这些tag中来。比如有prjTag1和prjTag2,model1、model2需要合并到prjTag1中,model3、model4需要合并到prjTag2中。拿prjTag1举例:

在prjTag1的work copy中,merge

From:主干的打出分支时的版本

To:分支的Head版本(最新版本)

注意:From不是本Tag的某个版本,而是之前主干打出分支时的版本,最终Merge到prjTag1的work copy,而prjTag1是找不到当初打分支时的版本的。



  • 分支中的起始版本一致


比方说现在有两个分支,分支A 和分支B 。他们分别从主干T 创建分支。

主干T 版本100 ,分支A 的版本101 ,分支B 的版本号102 。

 

当分支A 和分支B 都各自完成开发,并且提交到SVN 上后。A 的版本号为110 ,而B 的版本号为115 。

 

分支起始版本一致

 

此时必须两步操作,并且操作在主干T 的工作副本内执行:

 

1)     主干T 合并分支A

起始URL 和版本

主干T 的URL 、版本100

 

结束的URL 和版本

分支A 的URL 、版本110

 

2)     合并分支A 后再继续合并分支B

起始URL 和版本

主干T 的URL 、版本100

 

结束的URL 和版本

分支B 的URL 、版本115

 

注意:完成第一步的时候不必提交。



参考:http://blog.csdn.net/fbysss/article/details/5437157

          http://blog.csdn.net/kennylee26/article/details/4494704
0 0
原创粉丝点击