`

SVN switch 用法详解

    博客分类:
  • SVN
 
阅读更多


一直知道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,就会很难分辨出那些文件都是受哪个版本库的控制(需要每个文件单独查询),因此一定要小心别产生混乱呦。


http://www.oschina.net/question/4873_20777

分享到:
评论

相关推荐

    linux下svn的使用

    #### 二、常用 SVN 指令详解 ##### 1. 将文件检查出到本地目录 **命令**: `svn checkout <path>` - **功能**: 将远程版本库中的文件或目录复制到本地。 - **参数**: - `<path>`: 需要检查出的文件或目录的路径,...

    SVN创建、合并与切换分支操作详解

    1. 使用SVN命令(如`svn switch`)或客户端工具,指定要切换到的分支路径。 2. 完成切换后,你的工作副本将指向新的分支,你可以开始在该分支上工作了。 在实际开发中,SVN的分支管理策略可以帮助团队有效地组织...

    SVN常用命令(使用频率最高的)

    **SVN常用命令详解** 版本控制系统Subversion(简称SVN)是软件开发中不可或缺的工具,它用于管理和跟踪代码的变化,使得多人协作开发变得井然有序。以下是一些使用频率最高的SVN命令,确保你能快速上手并有效地...

    svn 命令详解

    ### SVN 命令详解 #### 一、将文件checkout到本地目录 - **命令格式**:`svn checkout <path> (path是服务器上的目录)` - **示例**:`svn checkout svn://192.168.1.1/pro/domain` - **简写**:`svn co` **解释*...

    使用SVN进行版本控制 使用SVN1.2

    ### 使用SVN进行版本控制:SVN 1.2详解 #### 一、SVN简介与重要性 Subversion(简称SVN)是一款开源的版本控制系统,在软件开发领域有着广泛的应用。它允许开发者们追踪代码的历史变更记录,并支持多人协作开发。...

    svn常用命令介绍

    13. **切换(svn switch)**: 更改工作副本指向仓库的另一个分支或标签,`svn sw URL`。 14. **重命名/移动(svn move/rename/mv)**: 在工作副本中重命名或移动文件或目录,并保持版本控制,`svn mv oldpath ...

    SVN命令及外部定义用法

    2. **切换到分支**:使用`svn switch`命令切换到新创建的分支。 3. **在分支上工作**:对分支进行修改。 4. **合并分支**:当分支开发完成,使用`svn merge`命令将分支的更改合并回主分支。 ### 学习资源 - `svn...

    SVN usage on Linux

    ### SVN在Linux下的使用详解 #### 一、概述 Subversion (SVN) 是一个开源的版本控制系统,广泛应用于软件开发和其他需要版本控制管理的领域。本文档详细介绍了如何在Linux环境下使用SVN命令行工具来进行版本控制...

    svn右键的使用

    ### SVN右键菜单知识点详解 #### 一、概述 在软件开发过程中,版本控制系统是非常重要的工具之一,能够帮助团队高效地协作与管理代码版本。其中,Subversion (SVN) 是一个广泛使用的集中式版本控制系统。为了更好...

    SVN 冷备方式

    - 使用`svn switch`切换SVN工作区到指定路径。 - **SVN删除账号**: - 删除指定用户的SVN账号: ``` rm -rf ~/.subversion/auth/svn.* ``` - **代码操作**: - 导出代码: ``` svn export svn://地址 ``` - ...

    svn常见命令行

    ### SVN 常见命令详解 #### 一、概述 Subversion(简称SVN)是一种分布式版本控制系统,广泛应用于软件开发和其他需要版本控制的场景。本文档将详细介绍SVN的一些常用命令及其应用场景,帮助用户更好地理解和掌握...

    SVN使用的分支与合并

    SVN 分支与合并详解 SVN(Subversion)是一款开源的版本控制系统,广泛应用于软件开发、文档管理和其他需要版本控制的领域。在软件开发过程中,SVN 的分支与合并功能是非常重要的,下面我们将详细介绍 SVN 中的分支...

    SVN管理项目视频教程

    - **svn switch**: 切换工作副本到另一个URL。 #### 四、SVN应用场景示例 - **团队协作开发**:多个开发者可以同时对同一项目进行修改,通过SVN进行版本控制和协同工作。 - **代码审查**:利用SVN的日志功能,团队...

    svn中文手册-版本控制

    **使用SVN中文手册**:“svn-book.pdf”是这份手册的PDF文档,涵盖了SVN的安装、配置、基本操作、高级用法以及最佳实践。对于初学者和经验丰富的开发者来说,都是学习和参考的宝贵资源。 总结,SVN中文手册为理解...

    SVN版本控制方案

    1. **获取工作拷贝**:使用`SVN checkout`或`SVN switch`从Trunk获取一个新的工作拷贝。 2. **创建分支**:根据需要创建新的功能分支。 3. **开发与测试**:在分支上完成新功能的开发,并进行充分的测试。 4. **合并...

    SVN常用命令行

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪软件开发过程中的文件变更。它通过维护一个中心版本库来保存项目的各个版本历史,使开发者能够方便地协作并追踪代码的变化。 #### 二、SVN命令详解 ...

    svn中文手册

    - `svn switch`: 更换工作区所对应的仓库位置或分支。 ### 实用技巧与最佳实践 1. **定期提交**:养成良好的提交习惯,频繁地提交小的更改,避免一次性提交大量代码,这有助于问题的快速定位和解决。 2. **编写有...

    SVN使用手册

    ### SVN使用手册详解 #### 一、概述 **SVN**(Subversion)是一种广泛使用的版本控制系统,用于管理和追踪文件及目录的变化。它提供了一种有效的方式来处理文件版本控制和源代码管理的问题。本文档旨在详细介绍SVN ...

    SVN简易教程.pdf

    ### SVN简易教程知识点详解 #### 一、SVN简介与TortoiseSVN介绍 - **SVN**(Subversion)是一种广泛使用的版本控制系统,主要用于软件开发中的代码管理。它支持多用户协作,并能有效追踪代码的历史变更记录,便于...

    MyEclipse安装配置svn

    为了在MyEclipse中使用SVN,我们需要添加SVN插件。 1. **安装SVN插件** MyEclipse本身并不内置SVN支持,所以我们需要手动安装。打开MyEclipse,选择“Window” -> “Preferences” -> “Install/Update” -> ...

Global site tag (gtag.js) - Google Analytics