SVN分支与合并
分支的基本概念就正如它的名字,开发的一条线独立于另一条线,如果回顾历史,可以发现两条线分享共同的历史,一个分支总是从一个备份开始的,从那里开始,发展自己独有的历史(如下图所示)

⑴创建分支
假设目前我们版本库中的项目的布局如下图:

如图所示,我们的项目放在了trunk(主线)目录,另外还有branch(分支)和tags(标签)目录,这样的布局是为了更清晰的区别主线、分支和标签三者的位置。
subversion对分支和标签是通过复制一份最新的版本库的快照来实现的。
开始创建分支:
在我们CheckOut的主线目录(trunk)上,右键点击然后选择“Branch/tag…”

在弹出的窗口中,将To Url 指向branch目录并输入分支的具体目录名,这里是mybranch1.0,我们即将创建的分支便存放于此处,点击OK。

Update一下本地的branch目录,你就可以看到你刚刚创建的分支“mybranch1.0”,这样一来我们的分支就创建完成了。

创建分支的最大的目的就是跟主线进行并行开发的时候不影响主线的开发。
因为你在分支上所做的提交都只存于分支上,主线上的Update是看不到分支的修改的。如下图所示,trunk只能看到r344的版本,并看不到r343的版本。

(什么时候应该使用分支呢?例如你接到了一个任务,完成这个任务需要三四个人的合作,你们之间需要共享资源,那们就可以创建一个专为这次任务的分支,参与此次任务的人员则在分支上做开发,等完成之后再合并到主线上,才不会出现将实现了一半的不完成功能也提交到主线上,影响主线的正常工作。又或者自己需要一个较长的开发周期来完成任务,这么长的时间内如果一直没有将资源进行提交,万一丢失了就前功尽弃了。当然分支不是只用于此类情况,还有其它很多种情况也能使用分支来达到目的。)
使用分支需要注意,由于长期的独立开发,可能会在合并回主线时出现较多的冲突。所以在支线上开发间期如果发现主干有更新,而且这个更新有可能将来跟你产生冲突,那你可以先将主线的内容合并到分支上。已免等到做了大量修改再来更新。(其实此过程跟分支合并到主线上是一样的操作,只是目的地不同。)
例如我们在主线上的版本为3,我们如何将此版本的信息合并到分支上呢? 
在分支的根目录上右键点击,选择“TortoiseSVNMerge…”。

在这里我们必需先弄明白一个合并背后的关健概念
合并的过程中发生的所有事:首先两个版本库树的比较,然后将区别应用到本地拷贝.
这个命令是包括三个参数的:
1. 初始的版本树 2.最终的版本树 3一个接收区别的工作拷贝。
弄明白这些概念之后我们继续往下操作。
在弹出的窗口中,选择主线目录和其版本号(初始的版本树),再选择主线目录和最新的版本号(最终的版本树),这里也可以是某一个版本号但应该比初始的版本树的版本号要高,接收区默认为你右键所指的目录,这里是mybranch1.0。
在合并之前我们可以通过点击“Unified diff”,查看两版本树之间所有文件的内容的变化,“diff”显示出有发生变化的文件列表,“dry run”能显示真正合并时的状态信息,但并没有做任何的合并操作。
我们点击“Merge”。

在点击“Merge”,合并后的文件(即对分支上的文件补上了主线上修改的内容),如无冲突则可以在分支上像其它文件一样使用了,如果合并后的内容不满意,可以通过撤销来取消这次的合并操作,前提是未对合并后的文件做提交操作。
分支合并到主线跟从主线上合并内容到分支上类似
不同的是
1、开始的版本库是分支创建的版本
2、结束的版本库是完成所以开发工作之后的版本
3、应用的目的是主线目录
关于转换工作拷贝、标签(标签在Subversion中跟分支是相同原理的,一个不去做任何的修改的分支就是版本库某一时刻的一个快照,相当于为某一个版本做了一个标签)
SVN分支与合并的更多相关文章
- 详细说明svn分支与合并---命令行
一,svn分支与合并有什么用? 作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多.因为一般情况下,是用不着svn分支的,其实也没有那个必要.下面我例举几个需要用到svn分支的情况: 1 ...
- SVN 分支及合并的介绍和实践---命令行
写在前面 一些相关的概念和原理 进行分支开发的最佳实践 合并的分类 在 Eclipse 中进行合并操作 相关资源 写在前面 本文是由演讲整理而来的,介绍了 SVN 分支与合并的概念.流程和一些实际操作 ...
- SVN分支与合并【超详细的图文教程】(转载)
SVN分支与合并 一. 分支与合并的概念 二. SVN分支的意义 三. 如何创建分支与合并分支 一.分支与合并的概念: 分支:版本控制系统的一个特性是能够把各种修改分离出来放在开发品的一个分割线上.这 ...
- 详细说明svn分支与合并,以及实例
详细说明svn分支与合并,以及实例 一,svn分支与合并有什么用? 作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多.因为一般情况下,是用不着svn分支的,其实也没有那个必要.下面我例 ...
- 实例讲解SVN分支和合并问题(转)
本节向大家简单描述一下SVN分支和合并方面的知识,在学习SVN的过程中SVN分支和合并时经常遇到的问题,在这里和大家分享一下,希望本文对大家有用. 关于主线同SVN分支合并的概念及如何使用的误区此问题 ...
- SVN 分支代码合并到主线
SVN 分支代码合并到主线 步骤一安装TortoiseSVN 客户端,在本地 checkout主线代码 步骤二:创建branches分支 步骤三.branches修改提交代码 步骤四:分支代码合并到主 ...
- eclipse svn分支与合并操作
以前做项目的时候没有用过svn的分支合并操作,今天用到了,刚开始还真不会啊.最后查了下就是这么的方便.专门记录下来. 原文来自:http://blog.csdn.net/lisq037/article ...
- (转)myeclipse插件—SVN分支与合并详解【图】
svn作为版本控制软件被广泛用于众多公司的开发团队中,最多的场景就是一个项目上传svn后,一个组内的小伙伴在上边提交和更新代码以及解决冲突,其实这只是发挥了svn的很小的一部分功能. 先稍微介绍一下s ...
- SVN分支的合并和同步
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并 ...
- myeclipse使用SVN分支与合并详解
此博文主要内容来源地址:https://blog.csdn.net/liuyifeng1920/article/details/53118183,感谢原创博主: 先介绍一下svn的两种开发和发布的规范 ...
随机推荐
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...
- Anywhere服务建立及连接步骤
<烟叶自动化收购管理系统(山东版)>服务端程序为<烟站综合管理系统5.0>,5.0使用的数据库为Anywhere,设置方法如下: 建立anywhere服务连接步骤 服务 ...
- 连接SQL SERVER 2008需要加端口号
VC2010 ADO 连接SQL SERVER 2008,127.0.0.1,1433,要加上端口,否则连不上.注意:地址和端口之间使用逗号隔开. 连接SQL SERVER 2000可以不加端口号,使 ...
- Windows 8.1 with update 官方最新镜像汇总
Windows 8.1 with update 官方最新镜像汇总,发布日期: 2014/12/16,Microsoft MSDN. 镜像更新日志: 12/29:32位大客户专业版中文版 12/24:6 ...
- 解决Visual Studio 2010/2012的RC4011 warnings
如果在vc10/11工程的rc文件中有以下任意一行代码: #include <winuser.h> #include <richedit.h> 那么vc将会给出一对警告: C: ...
- 一个简单的JavaScript Map
用js写了一个Map,带遍历功能,请大家点评下啦. //map.js Array.prototype.remove = function(s) { for (var i = 0; i < thi ...
- samba权限之easy举例说明--原创
实验环境RHEL5.0,samba3.023rc-2 一.何为browsealbe=no? 如图lingdao目录的权限为777 如图ling目录的共享设置和用户的ID和组 当用户lingdao_01 ...
- LeetCode:Minimum Path Sum(网格最大路径和)
题目链接 Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right ...
- Javascript 固定表格表头
遇到一个简单的需求: 客户有一个表格可能有很多内容,当内容很多的时候,表格就会出现滚动条 客户希望当表格内容很多时,只滚动表格而不滚动浏览器窗口 在网上找到很多相关的插件,要不就是太复杂,要不就是满足 ...
- 启动和JQuery绑定--AngularJS学习笔记(二)
上一篇简单的分析了AngularJS的项目结构,后面就开始分析具体的源代码了. 从angularFiles.js中的定义可以看出有几个文件直接位于src根目录,并不是隶属于某个模块.这几 个分别是mi ...