`

【转】svn的merge用法

阅读更多
一个大项目在开发中可能会拆分成几个小项目,分别分去,同时共通的部分再由人做,做完后再统一合并。同时,在开发中,共通的部分修改后,其它人要保持同步。

 

这种情况反应到SVN的分支/合并功能上,再贴切不过了。

 

SVN可以为一个版本库中的内容(主干)建立一个分支.分支和主干完全独立,就相当于把代码再复制一份,重新添加到版本库中。但SVN提供另一个功能,就 是把主干做出的修改合并到分支中,以及把分支修改的内容合并到主干中。当然,我们也可以把主干的版本库的路径切换到分支上,然后更新,来实现把分支的修改 更新到主干;以及修改分支路径来同步主干的修改。但过程复杂,还容易出错。

 

SVN 的分支功能还提供一些合并的测试,可以在不改动版本路径的情况下完成上面的需求。

 

 

 

示例:

 

 

 

1.将一个整项目建一个分支.

 

 

 

SVN <wbr>- <wbr>主干/分支

 

 
SVN <wbr>- <wbr>主干/分支
 
建立时要注意:
 
1.当前复制源,即专业术语中的 "主干(truck)"
2.分支存放的位置. 当然,分支也是在SVN版本库中.
3.写上日志.这个大家应该懂的.
4.是否把主干的路径切换到分支.如果勾选了,建立分支后,在主干里做出的修改并提交后,更新会提交到分支上。主干的版本源内容不会变.
 
这时我们看一下 trunk 目录的属性,可以看到它的路径已经变成: /calc/branches/my-calc-branch 了。

SVN <wbr>- <wbr>主干/分支

 

 

 

为了避免产生困惑。以及失误。在建立的时候不要勾上 "切换到分支" 的选项。如果勾上了,我们还是切换回去:

SVN <wbr>- <wbr>主干/分支

SVN <wbr>- <wbr>主干/分支

 

 

 

注意:
 
1.主干的目录
2.版本库源路径

这时你便可以在 /calc/branches/my-calc-branch 分支上开发新的功能,且不会影响到其他成员开发或维护主干的内容。
 
2.合并主干的变更
也许过了一段时间,原本的 /calc/trunk 主干可能已经有其他成员陆续修正了一些 Bugs,但这时你的分支 /calc/branches/my-calc-branch 就可以直接套用主干 ( /calc/trunk ) 的更新,除了避免重复的工作外 ,也可以避免版本的冲突,因为多人改同样的文件可能发生冲突。
 
经常將 开发主干 ( /calc/trunk ) 的变更透过 svn merge 合并至 分支 ( /calc/branches/my-calc-branch ) 是一个非常好的习惯,这样才不会让你脱离主干(trunk) 过久而导致将分支 ( /calc/branches/my-calc-branch ) 合并回 主干 ( /calc/trunk ) 时发生许多冲突。

SVN <wbr>- <wbr>主干/分支

SVN <wbr>- <wbr>主干/分支

 

 

 

从主干 ( /calc/trunk ) 合并至分支 ( /calc/branches/my-calc-branch ) 通常选第 1 个,也就是 [Merge a range of revisions]
 
注意.我们是在分支上使用的 Merge 功能.因为是要在分支上应用主干的更新.

SVN <wbr>- <wbr>主干/分支

 

 

 

在 Merge 的窗口有以下注意事項:
 
1.合并的来源,由于我们打算从主干 ( /calc/trunk ) 合并至分支 ( /calc/branches/my-calc-branch ),所以合并的來源要选 /calc/trunk 才对!
2.合并的结果会直接与目前「工作目录」(Working Copy) 做比对,并修改目前工作目录中的所有文件。因此建议在做合并之前可以将所有尚未 commit 的档案先 commit 到版本库,避免不必要的冲突事件发生。

SVN <wbr>- <wbr>主干/分支

 

 

 

在正式进行合并(Merge)之前,建议先执行 Test merge 看看是否会发生什么事!

 

 

 

若无异状则可直接按下 [Merge] 按钮进行合并动作,这时从 主干 ( /calc/trunk ) 分支出来的到目前工作目录的版本就会做个比较,然后直接套用变更到你现有的文件、目录或属性里。

SVN <wbr>- <wbr>主干/分支

 

 

 


在合并之后如果没有发生冲突,不代表真的没冲突,所以必须再次对原始码做出验证后才能 commit 进版本库,建议可参考以下流程:
 
1.将项目进行建置(Build)
2.如果没问题再对项目进行单元测试(Unit Testing)或手动测试(Manual Testing)
3.如果都没问题再 commit 目前合并无误的版本到版本库!
 
SVN <wbr>- <wbr>主干/分支

 

 

 

3.合并分支到主干

 

最后我们的 my-calc-branch 分支已经将新功能开发完成且测试无误,所以要将 分支 ( /calc/branches/my-calc-branch ) 的最终版本合并回 主干 ( /calc/trunk ),这时的手续如下:

SVN <wbr>- <wbr>主干/分支

SVN <wbr>- <wbr>主干/分支

 

 

 

从 分支 ( /calc/branches/my-calc-branch ) 合并回 主干 ( /calc/trunk ) 通常选第 2 个,而特别选择 [Reintegrate a branch] 这个选项是很重要的,因为这有以下好处:
 
1.让 Subversion 能知道 主干 ( /calc/trunk ) 是从哪个分支、哪些版本合并进来的
2.有效节省 Subversion Repository (SVN储存库) 的空间,因为不用重复储存分支的所有变更信息
3.可以产生 Revision graph 得知项目开发的分支状况

SVN <wbr>- <wbr>主干/分支

 

 

 

一样可以先 测试合并(Test merge) 再正式进行 合并(Merge)

SVN <wbr>- <wbr>主干/分支

 

 

 

合并完后再将变更 commit 到版本库

SVN <wbr>- <wbr>主干/分支

 

 

 

4.删除使用完毕的分支

当 分支 ( /calc/branches/my-calc-branch ) 合并回 主干 ( /calc/trunk ) 并 commit 了之后,该分支就没用了,该分支如果未来不再更新或继续开发,Subversion 也不会继续追踪这个分支的变更 (因为之前已经 Reintegrate 过了),建议将该分支删除。

SVN <wbr>- <wbr>主干/分支

SVN <wbr>- <wbr>主干/分支

SVN <wbr>- <wbr>主干/分支

 

转自: http://blog.sina.com.cn/s/blog_5f54f0be0101f04y.html

分享到:
评论

相关推荐

    svn的使用方法简介

    删除文件或目录使用`svn delete`或`svn rm`,合并不同分支的更改使用`svn merge`,而`svn diff`则用于查看两个版本之间的差异。 在使用SVN时,可能会遇到权限验证,需要输入用户名和密码。此外,SVN还支持匿名访问...

    SVN(一)客户端及eclipse-svn插件用法

    以上就是SVN客户端的基本使用方法,以及在Eclipse中借助eclipse-svn插件进行版本控制的主要操作。了解和熟练掌握这些技能,对于提升团队协作效率和代码质量至关重要。通过不断实践和熟悉SVN的各种功能,开发者能够更...

    Svn使用方法和问题的解决方案

    【Svn使用方法和问题的解决方案】 Svn,全称Subversion,是一种广泛使用的版本控制系统,用于管理和跟踪项目源代码的变化。它允许开发者在多个人协作的环境中进行代码的版本控制,确保团队成员的工作同步,并能追溯...

    SVN安装包及使用方法

    SVN,全称为Subversion,是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的变更历史。在软件开发过程中,SVN可以帮助团队协同...掌握SVN的安装和使用方法,将有助于提升团队的开发效率和代码质量。

    svn使用方法linux

    在Linux环境中,使用SVN可以高效地管理代码和其他项目资源。以下是一些常用的SVN命令及其实现的功能: 1. **Checkout (检出)**:`svn checkout` 或 `svn co` 命令用于从远程仓库下载项目到本地工作副本。例如,`svn...

    SVN 的使用方法详解

    SVN,全称为Subversion,是一种版本控制系统,用于管理和跟踪文件和目录的变更。通过SVN,用户可以记录项目的历史版本,便于恢复旧版本、管理多人...通过熟练掌握SVN的使用,可以显著提升开发效率和团队协作的流畅度。

    linux svn客户端使用方法介绍.docx

    使用`svn merge`合并不同版本间的差异。例如: ``` svn merge -r 200:205 test.php ``` 12. **Help(帮助)** 使用`svn help`获取命令帮助。例如: ``` svn help svn help ci ``` 以上是Linux SVN客户端...

    svn客户端的使用方法

    【SVN客户端的使用方法】 SVN(Subversion)是一种版本控制系统,用于管理软件开发过程中的源代码和其他文件。在本文中,我们将详细介绍如何使用SVN客户端,特别是TortoiseSVN,进行代码的导入、迁出、提交、添加新...

    SVN常用命令集合及简单用法

    SVN常用命令集合及简单用法 SVN(Subversion)是一种版本控制系统,用于管理代码、文档、图片等文件的版本变更。下面是常用的 SVN 命令集合及简单用法: 1. 检出文件:svn checkout path(path 是服务器上的目录)...

    SVN的安装包、原理图及使用方法

    本资源包提供了SVN的安装包、工作原理的详细解释以及使用方法,对于理解和操作SVN具有极大的帮助。 首先,我们来看SVN的安装。在压缩包中,你应该能找到SVN的安装教程。通常,安装过程包括下载适用于你操作系统的...

    linux下svn的使用

    ### Linux 下 SVN 的使用 #### 一、简介 Subversion(简称 SVN)是一种分布式版本控制系统,主要用于软件开发项目中管理源代码的...熟练掌握 SVN 的使用方法,有助于提高团队协作效率,确保项目的稳定性和可维护性。

    svn的使用方法介绍

    本篇文章将详细介绍SVN的使用方法,包括安装、配置、基本操作以及解决常见问题。 **一、安装与配置SVN** 1. **Windows安装**: 可以下载TortoiseSVN,它是一个Windows下的SVN图形化客户端。在官方网站下载最新版本...

    SVN命令及外部定义用法

    4. **合并分支**:当分支开发完成,使用`svn merge`命令将分支的更改合并回主分支。 ### 学习资源 - `svn命令.docx` 文件很可能包含了SVN常用命令的详细解释和使用示例,建议仔细阅读以加深理解。 - `SVN外部定义....

    svn原理剖析

    1. **分支定期同步主干修改**:为了保持分支与主干的一致性以及尽早发现潜在的合并冲突,推荐定期使用命令`svn merge &lt;主干URL&gt;`来同步主干上的最新更改到分支中。这样做的好处在于可以及时发现并解决冲突,减少最终...

    SVN指南及高级应用

    1. **分支与合并**:`svn branch`创建分支,`svn merge`合并分支。分支策略有助于并行开发和代码审查。 2. **标签**:`svn copy`可以创建版本标签,用于标记特定里程碑。 3. **冲突解决**:当两个或更多用户对同一...

    SVN客户端的使用方法

    **SVN客户端的使用方法详解** SVN(Subversion)是一种版本控制系统,用于管理多个用户对同一份文件或项目代码的协作编辑。使用SVN客户端可以帮助团队成员有效地协同工作,跟踪文件的历史版本,防止冲突,并实现...

    SVN用法总结,介绍具体svn的各种命令

    ### SVN使用指南与命令详解 #### 一、概述 Subversion(简称SVN)是一种集中式的版本控制系统,广泛应用于软件开发和其他需要版本控制管理的领域。通过SVN,团队成员可以方便地协作开发项目,同时确保项目的每个...

    svn工具和使用方法文档

    以下是对SVN工具及其使用方法的详细说明: 1. **基本概念** - **版本库(Repository)**:存储所有文件和目录的中央仓库,记录了文件的所有历史版本。 - **工作副本(Working Copy)**:用户在本地计算机上的项目...

    linix fedora svn命令大全

    Linux Fedora下的Subversion(简称svn)是一个版本控制系统,用于跟踪文件和目录的...在实际工作中,根据团队的需求和工作流程,可能会有更复杂的用法,比如解决冲突、分支管理等,但这些基本命令构成了svn操作的基础。

    svn 回退/更新/取消至某个版本命令

    - **使用方法**:`svn help update`或简写`svn help up`。 #### 三、svn update的详细解释 `svn update`(或简写为`svn up`)是SVN中最常用的命令之一,用于将版本库中的更改合并到工作副本中。 - **基本用法**:...

Global site tag (gtag.js) - Google Analytics