posts - 262,  comments - 221,  trackbacks - 0

【19】切换分支


“分支”的一个重要作用就是并行开发---在企业级开发中,通常需要同时开发软件的新版本和维护软件的旧版本,trunk目录通常用于存放最新的代码,而branch目录通常用于存放某个开发过程中的分支。

例如:在开发ECoupon项目的过程中,程序员为了试验一个新需求或新功能是否可用,需要另外开辟一个空间来做测试。但是这个程序员的工作不应该影响到其他人的进度,或者说在主干线上工作的人员进度不能受到这个程序员的影响。那么此时分支的作用就显现出来了。

我们可以给该程序员创建一个分支,该分支的原始版本可以来自于主干的最新可运行代码,让这个程序员工作在这个分支上,而其他人并行地进行主干线的开发。但是因为此前这个程序员的本地工作副本是指向主干,所以他必须重新把版本关系指向这个属于他的最新分支。

这时他有两种做法:
 A.从分支中检出一份拷贝到不同于原来ECoupon项目的位置,然后独立开发
 B.使用svn switch命令来切换到版本库的不同位置。

这里我们选择方法B。svn switch命令的用法是:svn switch [--relocate] URL。该命令有两种用法:一种是不使用参数relocate的,一种是使用relocate参数的。它们的使用原则如下:

 A.如果切换后的版本库路径还是在同一个版本库,只是在不同的路径下。那么使用svn switch URL
 B.如果切换后的版本库位置已经改变(主机迁移,版本库迁移),但是目录结构不变。就需要relocate参数

因为我们切换的新路径是在同一个版本库下,只是路径变了。所以我们用如下命令就可以了

E:\Temp\ECoupon_tmp>svn switch http://localhost:8000/svn/Workspace/Ericsson/ECoupon_GA/branches/paul --username=guest --
password
=guest
 U   .
Updated 
to revision 38.

现在我们检查这个本地工作副本的信息,它已经转向分支paul了
E:\Temp\ECoupon_tmp>svn info .
Path: .
URL: http:
//localhost:8000/svn/Workspace/Ericsson/ECoupon_GA/branches/paul
Repository Root: http:
//localhost:8000/svn/Workspace
Repository UUID: 06f3a259
-b3b5-ff4e-9a70-52e8834f1976
Revision: 
38
Node Kind: directory
Schedule: normal
Last Changed Author: qlinpen
Last Changed Rev: 
38
Last Changed 
Date2009-12-10 18:47:59 +0800 (星期四, 10 十二月 2009)

一个简单的命令就成功地把版本库和本地工作副本的联系切换过了!

注意上面的例子中我们没有使用--relocate参数,这是因为我们切换的前后始终都是在同一个版本库,如果现在版本库的主机换了那么就需要加上该参数了


-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2009-12-10 19:02 Paul Lin 阅读(313) 评论(0)  编辑  收藏 所属分类: 项目管理

只有注册用户登录后才能发表评论。


网站导航:
 
<2009年12月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(19)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜