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的使用

1. switch URL[@PEGREV] [PATH] 2. switch --relocate FROM TO [PATH...] switch命令的作用是将工作副本镜像到同一版本库...
  • jiangliulin
  • jiangliulin
  • 2014年06月10日 10:03
  • 541

SVN switch 用法详解

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

【svn】svn的switch命令说明

linux下 svn switch 命令,switch (sw): 更新工作副本至不同的 URL。 用法: 1、switch URL[@PEGREV] [PATH] 2、switc...
  • dong123dddd
  • dong123dddd
  • 2016年09月06日 16:12
  • 1790

【SVN】SVN使用教程总结

SVN使用教程总结 SVN简介:  为什么要使用SVN?       程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应...
  • finish_dream
  • finish_dream
  • 2016年05月13日 22:16
  • 1484

svn switch的用法

由于服务器地址变更,SVN的操作会受到影响。之前的working copy,请在根目录下使用svn switch切换服务器地址。   svn switch的用法如下:   switch (sw...
  • Decisiveness
  • Decisiveness
  • 2016年07月12日 13:25
  • 693

svn 中的switch的使用

merge 是 右键将要合并到的文件夹, 然后选择从哪里全并(也就是自己的开发时的分支) switch 是切换到相应位置的作用(这个不太确定,仅供个人参考)   另一个作用是起到连动的作用 ...
  • softuse
  • softuse
  • 2017年11月25日 16:36
  • 74

SVN用法(merge,branch,switch)

SVN用法(merge,branch,switch) SVN merge命令用法 使用svn的merge命令,把一个版本的变化合并到另一个版本。 我使用的tortoise,在当前的...
  • ylwdi
  • ylwdi
  • 2014年03月11日 11:21
  • 1825

TortoiseSVN Switch和Relocate

这几天碰到249服务器崩溃问题,内容备份到了252,但是本地文件的svn指向还是249,如何更改?SVN提供了资源库重定向的功能。     先明确两个概念,工作副本就是本地的代码的目录,工作目录...
  • lidaasky
  • lidaasky
  • 2014年01月20日 11:40
  • 2675

常见SVN用法详解

你对SVN用法熟悉吗?这里向大家介绍一下版本管理工具SVN用法择要,希望通过本文的学习大家对SVN用法有更清晰的认识,欢迎大家一起来学习。 本节和大家学习一下一些常用的版本管理工具SVN用法...
  • Augusdi
  • Augusdi
  • 2011年09月06日 09:00
  • 1375

svn switch 导致个别文件switch失败

svn中,将一个项目从trunk switch 到branch,如果有文件有冲突,这个文件很有可能在switch后不成功。 解决这个问题,可以在switch前将冲突mark resoved。...
  • caolaosanahnu
  • caolaosanahnu
  • 2014年03月13日 11:44
  • 989
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SVN switch 用法详解
举报原因:
原因补充:

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