svn分支和合并实战(图解)
被svn分支和合并折腾了两天了。适才终于搞定了分支和合并的问题,打包部署成功了。总结下,以防遗忘。项目前段时间因为要加入OSGi的blueprint方法发布和获取服务,从svn主干上做了分支。如今分支的开发完成了,要求合并到主干中。svn的目录结构如下:
主干trunk:
https://192.168.0.11:8443/svn/code/product/trunk/项目名称/code/OSGiServer/plugins/com.tzf.svn.test
tag:
https://192.168.0.11:8443/svn/code/product/tag
分支branches:
https://192.168.0.11:8443/svn/code/product/branches/项目名称/code/OSGiServer/plugins/com.tzf.svn.test
?
先从http://subversion.apache.org/packages.html#windows下载win2svn文件:Setup-Subversion-1.6.13。安装,在cmd下,svn 命令就可以了。下载这个的作用有两个:查看分支分出时的版本和解决合并冲突。
?
我这里是从分支合并到主干,
?
?
现在在分支里做点修改,比如我加个类叫Bean2.java,并且提交。如图:
?
好啦,现在将工程切换到主干里,因为从分支合并到主干,被操作对象是主干工程。
要合并得知道分支分出去时的版本号,cmd打开命令行,使用
?
找到最下版本信息,这里就是r8623,记住这个版本号,以后合并的from就是从这个版本号开始的。to就是指你想要合并的版本号,一般都是最新版本,当然也可以是指定版本。
切换到主干,选中工程,右键team -> 合并:
?
next,出现
?
from就是分支的路径,下面选择的就是刚刚记下的分支分出的版本号,to这里就是合并到那个版本,我这里选择的最新版本。点finish,如果文件有冲突就弹出询问框,选择现在暂时不处理就行。
?我这里没有出现文件冲突,点ok就基本大功告成。这时需要在主干里体检带修改符号的文件,完成提交就搞定了合并。
如果文件冲突了怎么办呢,在命令行下进入冲突文件的目录,用svn命令行客户端键入:注意:From不是本Tag的某个版本,而是之前主干打出分支时的版本,最终Merge到prjTag1的work copy,而prjTag1是找不到当初打分支时的版本的。
?
?
被svn合并折腾了两天,也许还有OSGi复杂的原因,问题算是解决了,但是也是非常的繁琐。希望能看到网友朋友更好的方法分享。
1 楼 月光1125 2011-09-15 谢谢了,最近我也是整分支,打包时老是有问题 2 楼 liuzhiyi7288 2012-01-04 哥们儿,你说的“branch merge to trunk”,解决方案是错误的,如果从分支合并到主干,应该选择“Reintegrate a branch ”,真不清楚你那种方法怎么Merge的?你验证过吗;而且merge最关键的是resolved the Conflict,解决冲突不是执行个命令就可以搞定的,在出现冲突后,myeclipse会提示你,如果处理,应该选择最后一项,通过图形界面处理冲突,类似于我们平时提交代码解决冲突的界面,merge时冲突文件,系统会逐个提示你解决,处理完每个冲突后,关闭文件,系统会提示,我们选择“已经解决冲突,将文件合并到一起”,这样处理会继续往下。 3 楼 liuzhiyi7288 2012-01-04 不过还是谢谢你,文章比较详细! 4 楼 flysnowxf 2012-06-25 liuzhiyi7288 写道哥们儿,你说的“branch merge to trunk”,解决方案是错误的,如果从分支合并到主干,应该选择“Reintegrate a branch ”,真不清楚你那种方法怎么Merge的?你验证过吗;