SVN中的Branches分支以及Merge 应用举例
come from: http://www.360doc.com/content/12/0816/19/1317564_230547958.shtml
创建Branch分支或者Tag标签 
当按照推荐的结构创建的版本库,创建分支以及Tag是很容易的。
 在我的SVN服务器上创建了一个版本库Test,结构如下:
在我的本地签出checkout,添加一个文件test.txt,然后提交。
加入这个时候我们需要发布一个版本的文件,同时有可能其他人会修改,
但我们不能影响当前的文件,只能在其修改好后再合并,这种情况下我们创建一个分支。
这个时候我们可以发现本地的trunk文件夹的SVN属性的URL已经被Switch到创建的版本的地址了:
执行SVN更新命令,可以查看到,本地branches文件夹下新增文件夹v1.0以及文件夹里面的文件v1.0。
修改分支和使用合并Merge功能
修改branches/v1.0下面的文件test.txt,添加一行modified in branch v1.0.然后签入到SVN服务器中:
由于刚才我们已经将trunk的SVN版本库URL转换到对应的版本,所以这个时候更新trunk文件夹可以看到更新的test.txt文件。
为了作测试,我们将trunk文件夹switch至对应的trunk地址:
当switch成功后,我们可以看到trunk下test.txt文件的内容并没有任何的更改,这正体现了刚才我们所说的在分支中的修改不会影响到主干。
下面修改trunk文件夹下的test.txt,添加一行modified in trunk.然后签入到SVN服务器中:
最好我们将实现一个重要的功能,就是Merge合并功能,将分支合并到主干中,这也是在团队软件开发中我们经常要使用的功能。
在TortoiseSVN的Revision Graph中可以查看trunk的版本变化图,如下:
从上图可以得出,在版本10的时候我们创建了分支版本/branches/v1.0,且SVN版本为11,在版本11基础上我们对分支进行了修改于是有了 版本12,我们再对trunk下的文件进行修改于是有了版本13,整个SVN目前的版本就为13,这与我们刚才做的修改是相吻合的。
下面将分支v1.0合并到主干中。
按照我们目前的情况,选择第二种:
选择v1.0:
然后,如下:
在我们的这次合并中肯定会产生问题,因为我们对test.txt文件进行了两次修改,因而会产生冲突Conflict,但这在实践中是不应出现这种情况 的,因为建立的分支目的就是修改那些在主干中不会被修改的文件,以便修改完成后合并到主干中。不过没关系,我们这里仅是演示而已,所以只需处理下冲突,手 动的将其合并(这在实际中不应该这样否则失去了分支的用途了):
这个时候可以看到我们的test.txt文件已经按照我刚才手动处理冲突实现了:
然后将trunk签入到版本库中:
如果我们再去查看branches\v1.0下的test.txt文件它的内容依然是最初在trunk中编辑的内容。
另外再次强调一点:在实际操作中我们不会对一个分支文件在主干中再次进行修改,否则会造成一些冲突,这样就失去了分支的便利性了;Tag的创建与分支是类s似的,只不过Tag往往仅用于标识特定版本,而不会用于bug修复,增加新特性等情形。
SVN中的Branches分支以及Merge 应用举例的更多相关文章
- SVN中trunk,branches,tags用法详解
		
原文地址:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion有一个很标准的目录结构,是这样的.比如项 ...
 - SVN中trunk,branches,tags用法详解(转载)
		
转载出处:http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html Subversion是一个自由开源的版本控制系统.在Subv ...
 - SVN中trunk,branches,tags用法详解【转】
		
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...
 - SVN中trunk,branches,tags用法详解[重要]
		
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-ta ...
 - SVN中trunk,branches,tags的使用明细--项目代码的管理
		
SVN在项目开发过程中有两种模式: 第一种:Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局svn://proj/|+ ...
 - SVN中trunk、branches、tag的使用
		
我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说明SVN里的trunk,branched,tags这个三个文件目录的用法 ...
 - SVN中trunk、branches、tags用法详解
		
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/. 那么标准的svn布局是:svn://proj/|+-trunk+-branches+-t ...
 - SVN 中trunk、tags、branches使用
		
简介 我们都知道SVN是管理项目源代码的软件,可以把我们开发中的各个阶段的代码记录下来,供我们以后来使用,那么SVN具体的结构你是否知道呢?下面我们来介绍一下它的基本结构 Trunk.Branches ...
 - SVN分支/主干Merge操作小记
		
一.前言 说来惭愧,鄙人从事开发多年,使用svn已经好几个年头了,但是却仅限于update.commit.compare之类的操作,最近想到github上学习别人写的NIO源码,顺便去熟悉git的使用 ...
 
随机推荐
- [转载] 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc),编写函数 strcpy(C++版)
			
已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串.不调用C++/C ...
 - openjudge 大师兄,师傅被妖怪抓走啦
			
描述 孙悟空听到沙僧大喊一句:“大师兄,师傅被妖怪抓走啦!”于是孙悟空直追白骨精而去.孙悟空在一条长度为L的森林小路上飞奔,上面有L+1个整点,依次为0,1,2……L.白骨精会使用一种大范围的攻击法术 ...
 - Redis安装及基本配置
			
一.Redis介绍 1.Redis是一个key-value存储系统 2.官方站点http://redis.io 3.Redis和Memcached类似,但支持数据持久化 4.支持更多value类型,除 ...
 - Codeforces Round #119 (Div. 2)
			
A. Cut Ribbon \(f(i)\)表示长为\(i\)的布条最多可以剪几段. B. Counting Rhombi \(O(wh)\)枚举中心计算 C. Permutations 将序列一映射 ...
 - URAL Mosaic(并查集)(欧拉回路)
			
Mosaic Time limit: 0.25 secondMemory limit: 64 MB There's no doubt that one of the most important an ...
 - Python爬虫学习笔记——豆瓣登陆(三)
			
之前是不会想到登陆一个豆瓣会需要写三次博客,修改三次代码的. 本来昨天上午之前的代码用的挺好的,下午时候,我重新注册了一个号,怕豆瓣大号被封,想用小号爬,然后就开始出问题了,发现无法模拟登陆豆瓣了,开 ...
 - java的nio之:unix内核的五种I/O通信模型
			
一:根据unix的网络编程对I/O模型的分类,UNIX提供了5种I/O模型===>阻塞I/O模型:最常用的I/O模型.所有文件操作都是阻塞的.我们以套接字接口为例讲解此模型:在进程空间中调用re ...
 - -bash: crontab: command not found(转)
			
操作步骤 1. 确认crontab是否安装: 执行 crontab 命令如果报 command not found,就表明没有安装 2. 安装 crontab 执行 yum install -y vi ...
 - Maximum number of WAL files in the pg_xlog directory (2)
			
Jeff Janes: Hi, As part of our monitoring work for our customers, we stumbled upon an issue with our ...
 - Linux查看端口使用状态、关闭端口方法
			
前提:首先你必须知道,端口不是独立存在的,它是依附于进程的.某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了.下次若某个进程再次开启,则相应的端口也再次开启.而不要纯粹的理解为关闭 ...