一、 背景
平时在进行开发时,一般都会有多版本同时进行,包括项目版本、周版本、紧急版本等,当某一个版本具备上线条件后,需要在上一个已发布的版本基础上进 行发布,才能够避免出现版本相互覆盖,因此往往需要对版本之间代码进行合并,这里就和大家探讨下如何合并代码,让合并代码质量高以及高效。
二、合并代码的常规方法
常规的方法是用Beyond Compare 工具来进行手工合并代码,该工具的最主要作用是对比出有哪些代码是不相同,然后人为地判断出哪些需要合并,哪些不需要合并。因此如果判断失误,则合并后的质量未必高;在合并的过程中,因为是需要人为识别如何来合并,因此效率自然不会很高.
三、利用SVN合并
Subversion的版本库是一种文件服务器,但不是“一般”的文件服务器。Subversion版本库的特别之处在于,它会记录每一次改变:每个文件的改变,甚至是目录树本身的改变,例如文件和目录的添加、删除和重新组织;可见SVN可自动识别出开发者具体修改什么代码,在合并时,只要知道SVN版本号,它会自动找出修改过的代码,然后合并到最终目标文件中。因此使用SVN来合并代码具有合并质量高以及高效的特点。 SVN的合并有三种类型,如下图:
第一种类型:合并一个版本范围
该类型是根据SVN指定的版本号来合并,也是最灵活的一种合并方式,可以是主干合并到分支,或分支合并到主干;主要应用场景是把分支或主干里面的一部分修改同步到主干或分支中去;甚至支持不同库的两个分支,当然这两个分支要求是相同的目录结构。
第二中类型:复兴分支
把分支合并到主干上,这里会把所有分支的修改,都合并到主干中,如果只想合并一部分,不合适使用该类型;而且这种类型合并受限的条件比较多,如分支和主干必须是在同一个库,本地工作目录不能够包含有被修改过的文件等。
第三种类型:合并两个不同的树
把两个分支的差异合并到本地的工作目录;其实它也可以把分支的代码同步到主干中,只需要把合并的from指定为主干URL,to指定为分支URL, 而本地工作目录是主干。
四、利用SVN合并具体步骤
在上面的三中类型中,最常用最灵活的是第一中类型:“合并一个版本范围”,也是我用得最多的一种合并类型。下面以这个类型为例,来介绍合并的整个过程,假设是从分支合并到主干。对于另外的两种类型合并都差不多;这里就不一一介绍了。
1.把主干check out 到本地,并确保文件更新到最新状态
2.按照下图示打开合并对话框:
3.选择合并类型:
根据合并类型进行选择,这里的例子中是选择第一个类型,然后再点“Next”按钮。
4.填写SVN URL和版本号信息:
“URL to merge from”下拉框选择需要合并分支或主干,在例子中,选择的是分支v1.0;在“revision range to merge”文本框选择具体需要合并的SVN版本号,可通过“show log”按钮查看有哪些版本号。可选择具体的版本号,也可以选择一个区间的版本号,如4-7,表示从SVN版本号4-7的全部合并。如选择区间版本号,需按住shift键。输入各项信息后,再点“next”。
5.合并选项的选择
在这个步骤中,主要是针对检索深度、行的结束符、空格选项的合并做设置,这里选择默认选项即可。
6.测试合并
在上面步骤中,直接点“test merge”按钮来测试合并结果。如果有冲突,则会有提示有冲突:
7.开始合并
在步骤6中,直接点击“merge”按钮将会开始合并, 如没有冲突时,合并后的对话框将是下面的截图:
8.处理冲突
合并后有冲突时,弹出的对话框如下图,注意此时“resolved”按钮是灰色:
点“edit conflict”按钮,将打开SVN的合并对话框,让开发者进行手工合并:
通过手工合并后,合并后的代码将在下面窗口中显示,确认合并完毕,点工具栏上的第二个保存图标进行保存,并关闭当前合并的对话框;回到处理冲突的对话框中,会发现之前“resolved”按钮是灰色,现在变成可点按钮:
点“resolved”按钮,至此,当前的冲突已解决;SVN会继续合并后面的版本。
9.提交代码
合并完代码后,最后别忘记提交代码,同时要输入注释,方便日后追溯。注释参考格式如下:从[分支或主干]合并代码到[主干或分支],版本号是从[开始的版本号]到[结束的版本号];
五、注意事项或建议
1.在使用SVN进行合并时,如何知道哪些版本号是合并过呢?在查看日志对话框中,已合并过版本号会变成灰色。
2.在修改代码时,建议遵循最小化修改原则,就是在修改代时,不要随意增加空格、空行和格式化、甚至包括文件的编码,有助于方便合并代码。
3.图片无法进行自动合并,但可利用SVN自带的图片对比工具来对比。
4.建议合并时,使用“test merge”来查看有多少冲突,如果冲突较多,可分多次合并,减少合并的复杂性。
来源: http://tid.tenpay.com/?p=3300
附加: http://blog.163.com/cp7618@yeah/blog/static/702347772010113005534949/
相关推荐
Eclipse svn创建分支、合并、切换讲解。 主要是合并操作。分支合并主干,已经冲突问题的解决。
svn代码合并步骤
SVN解决冲突(合并别人的修改) 详细讲解了svn冲突合并的方法 非常适合初学者学习
svn合并一直困恼大家.个人心得有益大家交流学习.
Merge是一款可视化文件比较/合并与文件夹同步软件,支持英语、德语、法语、国际西班牙语和中文(简体和繁体)。
SVN与idea的配置,idea项目提交到SVN,SVN项目检出到idea,版本冲突问题
svn提交代码合并分支.txt
新手看看。高手绕道。主要是关于svn主干与分支互相合并的问题
在信息技术飞速发展的今天,为了加快开发的效率,提升各个部门的联动配合,SVN工具成为了我们必不可少的研发工具。 日益更新的用户需求和不断升级的版本,如何才能做到灵活控制版本,今天我们请到了智博创享web端...
3.4.3. 分支与合并23 4. SVN API25 4.1. 使用API25 4.2. URL和路径需求27 4.3. 使用C和C++以外的语言27 4.4. 代码样例28 4.4.1. 使用版本库层28 4.4.2. 使用Python处理版本库层35 4.4.3. 一个Python状态爬虫40 4.5. ...
SVN就是用于多个人共同开发同一个项目,共用资源的目的。
描述了SVN的合并和同步策略,从分支方法、同步方法等方面进行了描述。
通过jenkins和ant以及svn进行整合,可以完成对系统的源代码的自动下载更新,以及代码的自动编译打包和项目的自动部署(项目的自动构建部署)。而且项目的自动构建部署和平台无关,不限定时间,可以定时操作,将开发...
eclipse 整理svn分支 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统
SVN 代 码 合 并 步 骤
svn 合并 主干合分支 分支合主干 eclipse中svn插件使用 svn客户端使用
SVN常用功能详细说明、代码合并、解决冲突、拉分支、还原版本 等
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的...
H.) 自劢实现 SVN 上最新代码的下载不合并。 I.) 自劢编译 user 不 eng 版本。 J.) 自劢创建需要提交的版本文件夹(V*.*_eng(user))。 K.) 自劢拷贝编译生成的镜像文件到版本文件夹 L.) 自劢压缩版本文件夹并实现...
1、svn拉取项目到本地2、详细介绍svn的使用3、svn的下载安装卸载4、常用的操作5、上传代码、拉取代码、合并代码等基础操作