一、 背景
平时在进行开发时,一般都会有多版本同时进行,包括项目版本、周版本、紧急版本等,当某一个版本具备上线条件后,需要在上一个已发布的版本基础上进 行发布,才能够避免出现版本相互覆盖,因此往往需要对版本之间代码进行合并,这里就和大家探讨下如何合并代码,让合并代码质量高以及高效。
二、合并代码的常规方法
常规的方法是用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/
相关推荐
### SVN合并 合并分支到主干是将分支上的改动整合到主干的过程。这个过程可能涉及多个提交,所以需要确保每次合并都是基于最新的主干代码。合并命令如下: ```shell svn merge ...
Eclipse SVN 创建分支、合并、切换讲解 Eclipse SVN 是一个功能强大的版本控制系统,广泛应用于软件开发项目中。本文将详细讲解 Eclipse SVN 中创建分支、合并、切换的操作步骤。 一、创建分支 创建分支是 SVN 中...
完成以上准备工作后,就可以开始合并代码了: 1. **复制源代码库到目标代码库**:将导出的A代码库中的项目文件夹(如A-1、A-2等)复制到B代码库对应的目录中,覆盖原有文件。 2. **使用Subversion进行代码对比**:...
Merge是一款可视化文件比较/合并与文件夹同步软件,支持英语、德语、法语、国际西班牙语和中文(简体和繁体)。
SVN(Subversion)是一个广泛使用的版本控制系统,它帮助开发者管理和维护不同版本的文件和代码库。在多人协同开发的项目中,版本控制显得尤为重要,但同时也可能会出现代码合并冲突的情况。当两个开发者对同一文件...
注意,`svn ci` 是 `svn commit` 的缩写,用于提交合并后的代码。在提交时,提供一个有意义的提交消息,如“merge 200900506_plutus_jiff_dev by jff”,有助于其他团队成员理解这次提交的目的。 总结来说,SVN ...
SVN合并操作是版本控制中的一个核心功能,允许开发者将分支上的改动合并回主干(trunk)或在分支之间进行改动的同步。本文档将详细介绍如何在SVN中执行合并操作以及解决可能出现的合并冲突。 首先,合并操作需要...
**svn合并** `svn merge`是Subversion(简称svn)中的关键命令,用于将一个分支或标记的修改合并到另一个分支。在版本控制系统中,合并是协同开发的核心操作,它允许团队成员同步各自的工作,避免代码冲突。以下是...
SVN与idea的配置,idea项目提交到SVN,SVN项目检出到idea,版本冲突问题
"SVN 代码比较工具"指的是能够与SVN集成,帮助开发者进行版本间的差异分析和合并操作的软件。 在SVN中,代码比较功能是非常关键的,它允许用户查看两个不同版本之间的差异,包括文件内容、目录结构等。这样的工具...
svn提交代码合并分支.txt
相较于传统的版本控制工具如VSS(Visual SourceSafe),SVN提供了更强大的功能和更高的稳定性,能够有效地追踪代码变更的历史记录,支持分支管理和合并操作。 根据描述,作者在日常的编码工作中面临了几个主要问题...
4. SVN合并: 当分支工作完成,需要将改动合并回主线。合并通常包括两个步骤:首先,更新主线工作副本以获取最新的代码;然后,将分支的改动合并到主线。 ``` # 更新主线工作副本 svn checkout ...
2. **合并操作**:SVNMerge的核心功能是合并代码,这涉及到从不同的分支或修订版中提取代码,并将它们整合到一个单一的代码库中。 3. **冲突解决**:当两个或多个开发者修改了同一部分代码时,就会出现冲突。SVN...
SVN的命令行工具如`svn checkout`、`svn commit`和`svn merge`等,使得开发者可以轻松地检出代码、提交更改和合并分支。 总的来说,获取并编译SVN 1.6.16的源代码是一项有益于开发者的工作,它不仅可以让开发者深入...
#### 一、SVN合并机制简介 SVN的合并操作主要涉及到两个或多个版本间的差异比较和整合。当一个文件或目录在两个不同的分支中都有改动时,SVN会尝试自动合并这些改动。然而,当合并过程遇到无法自动解决的冲突时,即...
在软件开发过程中,版本控制系统如SVN的重要性不言而喻,它能够帮助开发者跟踪代码变更、合并代码冲突以及备份项目历史,从而提高团队合作效率。 **1. SVN基础概念** - **版本库(Repository)**:存储项目所有历史...
- **协同工作**:多人协作时,通过SVN合并代码,解决冲突。 - **代码审查**:提交前可查看差异,进行代码审查。 - **分支管理**:创建和切换分支,支持不同功能的独立开发。 - **备份**:自动保存项目历史版本,防止...
Java实现的SVN统计修改代码行数的源码解析 在软件开发过程中,代码行数(LOC,Lines of Code)经常被用作评估项目规模、工作量和复杂度的一个指标。对于版本控制系统如Subversion(SVN),了解每次提交中修改的代码...
ASP.NET SVN源代码管理是一种用于协同开发和版本控制的技术,特别是在使用ASP.NET进行Web应用程序开发时,它能帮助团队成员有效地管理和跟踪代码更改。本文将详细介绍如何在ASP.NET项目中运用SVN(Subversion)进行...