SVN switch 用法总结
一直知道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有个switch命令,但是对它的介绍教程却很少,大多是生硬的svn帮助文档里的文字,从而一直不怎么会用.今天看了这篇文章,突觉豁然开朗,整理下来以备查阅. 使用SVN,自然是需要与别人合 ...
- svn switch relocate用法
svn info svn info 得到 Path: . Working Copy Root Path: /Users/chunhuizhao/phpworkspace/buptef_wxpay/tr ...
- 重新定位svn地址的方法(windows和linux),svn switch(sw)的帮助信息
今天公司的路由器出现问题,服务器的IP地址也跟着变了,但是原来的svn已经设置好了,现在需要更换地址 查询原地址的方法: root@jack-desktop:codes# svn info 路径: . ...
- linux下svn的用法
转载:http://blog.chinaunix.net/uid-22150747-id-189264.html 1.将文件checkout到本地目录 svn checkout path(path是服 ...
- [源码管理] ubuntu中svn简明用法:服务器搭建+客户端使用
本文是对网络上前人的优秀文章加以实践验证后所整理(修正或补充) 第一部分:svn服务器搭建(主要是四步走) 参考:http://www.son1c.cn/show/920.html 一,安装Subve ...
- [开源]QuickSwitchSVNClient,快速完成SVN Switch的工具
在实际的开发中,我们一般使用SVN工具进行源代码的管理.在实际的产品开发中,根据项目的一些定制要求,往往需要对某一些代码的修改,但是又不想影响主要的开发,这个时候需要对当前的主分支做一些分支处理(br ...
- QuickSwitchSVNClient,快速完成SVN Switch的工具
[开源]QuickSwitchSVNClient,快速完成SVN Switch的工具 在实际的开发中,我们一般使用SVN工具进行源代码的管理.在实际的产品开发中,根据项目的一些定制要求,往往需要对某一 ...
- C# 枚举与switch用法
using System; namespace Csharp { class Program { //枚举 public enum TimeOfDay { Morning=, Afternoon=, ...
- svn switch 的用法
switch用于在同一个版本库内不同分支之间的切换relocate用于版本库访问地址变更时,重新定位版本库 比如,由于SVN服务器更换到另一台主机上,这是SVN服务器的地址改变了,那么各客户端就无法连 ...
随机推荐
- Android四大组件之---activity生命周期详解
废话不多说, 先来一张Google提供的一张经典的生命周期流程图: 有的朋友可能看英文的有点费劲,再提供一张中文版的 O(∩_∩)O 相信已经很多人对这张图再熟悉不过了,下面笔者按照自己的理解并结合 ...
- Python基础之好玩的字符串格式化f-string格式
转自白月黑羽 Python3教程 : http://www.python3.vip/doc/tutorial/python/0010/#f-string-格式化 f-string 格式化 f-stri ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(三):搭建开发环境
生成项目模板 登录Spring Initializr生成Spring Boot项目模板,保存到本地. 地址:https://start.spring.io/ 导入Maven项目 使用IDE导入生成的M ...
- scala-04-set操作
Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的. Scala 集合分为可变的和不可变的集合. 默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scal ...
- postgresql逻辑结构--表(二)
一.创建表 语法: create table table_name( col01_name data_type, col02_name data_type, col03_name data_type, ...
- ng-app与ng-app='myApp'的区别
ng-app与ng-app=""是一样的,都是没定义应用名的,例如 <div ng-app="" ng-init="firstName='ech ...
- 百度全站 https FAQ:技术宅告诉你如何搜索更安全
百度从 14 年开始对外开放了 https 的访问,并于 3 月初正式对全网用户进行了 https 跳转. 你也许会问,切换就切换呗,和我有啥关系?我平常用百度还不是照常顺顺当当的,没感觉到什么切换. ...
- 使用gitlab, jenkins搭建CI(持续集成)系统(4) 灰度发布publish
publish环境是正式环境,和dev, test, prepublish环境不同的是,正式环境一般要更加谨慎一些,发布的时候需要有一个灰度过程,即:分多次部署,每次部署几个服务器节点,验证没有问题以 ...
- UVA 11054 Wine trading in Gergovia(思维)
题目链接: https://vjudge.net/problem/UVA-11054 /* 问题 输入村庄的个数n(2=<n<=100000)和n个村庄的数值,正代表买酒,负代表卖酒,k个 ...
- ASP.NET MVC的ContentResult
ASP.NET MVC的ContentResult返回简单的纯文本内容,可通过ContentType属性指定应答文档类型,通过ContentEncoding属性指定应答文档的字符编码. 一个例子来演习 ...