SVN switch 用法详解

转载 2013年12月05日 15:10:14

http://www.cnblogs.com/dabaopku/archive/2011/05/21/2052820.html

一直知道SVN有个switch命令,但是对它的介绍教程却很少,大多是生硬的svn帮助文档里的文字,从而一直不怎么会用。今天看了这篇文章,突觉豁然开朗,整理下来以备查阅。

使用SVN,自然是需要与别人合作开发才能体现出作用。两个人如果都在trunk上工作,那么每次提交时都要保证代码的正确性,否则自己提交一个bug百出的版本,对方一更新就挂了,所以提交时都要很谨慎。但我觉得应该有人会像我一样有这样的强迫症,文件做点小修改就想提交到服务器上去,唯恐自己将来哪里修改失败而万劫不复。抑或为了备份考虑或者有事离开,也常常把写的不完整的程序提交上去。因此,每个人建一个branch,在自己的branch上修改,再把修改merge进trunk里是个正确选择。

之前不了解switch的用法,导致导致建的branch完全没有个branch的样子,基本和trunk平起平坐了。自己修改了内容,想要提交到trunk中,怎么做呢?恩,先把work copy提交到branch中;把trunk中现在的内容merge进work copy中(别人可能已经更新了trunk),然后再提交到branch中。然后把当前的work copy switch到 trunk(以前以为swith是这么用的!),把branch的内容merge到work copy中,然后把work copy提交到版本库中。为了把branch提交到trunk中,居然需要三次提交,这完全是在操作两个完全独立的版本库嘛,根本没有什么逻辑上的联系!

现在终于要进入主题,讲讲switch究竟是怎么用的了。

根据官方帮助文档,switch的作用是 把工作拷贝更新到别的URL。下面的例子也讲的不是很明白,导致我一直以为switch就是你可以在一个文件夹里管理两个branch,来回切换就行了,不需要新建两个文件夹,从而节省你的硬盘空间!现在通过我上面提到的那篇文章才明白,原来:一个work copy里的文件夹,可以来自不同的版本库;文件夹里的每一个文件,可以受到不同版本库的控制!

什么意思?ok,让我们来亲自实践一下。

首先建立一个测试文件夹

把trunk checkout 到本地,不妨命名为me

然后再checkout出来一遍,命名为other

相当于我们有两个本地副本在工作。

在me里,我们建两个文件,a.txt(内容Hello world!),b.txt(内容Good morning!)把me提交上去。然后为a.txt建立一个branch,就放到branch下面称为a.me.txt吧。

最终我们的版本库是这个样子:

回到本地,在me文件夹了,我们对a.txt进行switch,选择branch里的那个文件,这样,a.txt本身名字没有变,只是指向了版本库中branch的那个文件了。

ok,我们对它做点修改,

提交上去,我们更新一下other,看看a.txt,会发现内容却是保持着最早的版本,刚才我们的提交却是是修改了branch而没有改变trunk。

我们以other的身份修改b.txt

提交然后更新me,就会发现b.txt确实受到了全局的改变。

好,下面我们就要把刚才对a.txt提交到全局了。这个其实就很简单了,把a.txt switch回trunk,merge的时候选择Reintegrate a branch,来源选择branch里的那个文件就好了。最后不要忘了提交。

这时候更新一下other,就会发现 a.txt 的变化了

这差不多就把switch的用法彻底理明白了。switch是把工作空间里的一些文件、文件夹交给另一个版本库来控制,让你在一个版本库中工作的时候随时接受别人在另一个版本库对其他文件的更新。因此,你就可以完全自在的编辑自己的branch,只要update就可以获取trunk的更新(当然,trunk里别人对你switch走的文件的修改你是无法更新的,等你下次要merge是会产生conflict),因此brach和trunk的逻辑关系就是branch跟着trunk更新,trunk通过branch的merge而不断完善。

当然了,如果你对一个文件夹里德很多文件进行switch,就会很难分辨出那些文件都是受哪个版本库的控制(需要每个文件单独查询),因此一定要小心别产生混乱呦。

 

相关文章推荐

SVN switch 用法详解

一直知道SVN有个switch命令,但是对它的介绍教程却很少,大多是生硬的svn帮助文档里的文字,从而一直不怎么会用。今天看了这篇文章,突觉豁然开朗,整理下来以备查阅。 使用SVN,自然是需要与别人...

SVN switch 用法详解

一直知道SVN有个switch命令,但是对它的介绍教程却很少,大多是生硬的svn帮助文档里的文字,从而一直不怎么会用。今天看了这篇文章,突觉豁然开朗,整理下来以备查阅。 使用SVN,自然是需要与...

switch语句中default用法详解

当年学C语言switch开关语句的时候,很多人会告诉你它是这么用的: switch(表达式){ case常量表达式1: 语句1; case常量表达式2: 语...
  • sum_TW
  • sum_TW
  • 2017年02月26日 15:39
  • 9364

switch语句的用法详解

switch语句的用法详解C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:switch(表达式) { case常量表达式1: 语句1; case常量表达式2:...
  • zwmwcj
  • zwmwcj
  • 2015年10月27日 13:54
  • 3479

C语言switch语句的用法详解 黑马程序员

Java培训、Android培训、iOS培训、.Net培训、期待与您交流! 语言还提供了另一种用于多分支选择的switch语句, 其一般形式为: switch(表达式){      case 常...
  • syp723
  • syp723
  • 2015年05月28日 08:58
  • 485

SVN组成中trunk,branches and tags功能用法详解

本文主要讲解一下SVN组成trunk,branches and tags,主要包括其概念的讲解、用法的比较,相信看完本文你肯定有不少收获,希望本文能教会你更多东西。 在本篇文章中,我将会详细说明我是...
  • softn
  • softn
  • 2016年07月03日 08:55
  • 191

SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤

使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发、测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间的...

SVN用法详解

http://orajc.blog.51cto.com/458434/94549 ...

SVN中trunk,branches,tags用法详解

SVN中trunk,branches,tags用法详解   Subversion有一个很标准的目录结构,是这样的。 比如项目是proj,svn地址为svn://proj/,那么标准的svn布...

SVN中trunk,branches,tags用法详解

Subversion有一个很标准的目录结构,是这样的。 比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branche...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SVN switch 用法详解
举报原因:
原因补充:

(最多只允许输入30个字)