[版本管理]SVN及CVS中tag和branch的选择及应用

八 1st, 2011

对于SVN中Branch/tag这个功能选项,使用的时候常常会出现混乱。实际上,使用tag或者branch完全是出于个人喜好,因为它们所做的事情都是一样的,都是使用copy实现的,它们在默认的权限上和一般的目录没有区别。

一般情况下:
tag,是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的。更多的是一个显示用的,给人一个可读(readable)的标记。

branch,是用来做并行开发的,这里的并行是指和trunk进行比较。比如,1.0版本开发完成,这个时候可以做一个tag,tag_release_1_0,然后基于这个tag做release版本,对外发布等。接着,trunk进入到1.1的开发,但是1.0却发现了bug,那么就需要基于tag_release_1_0做一个branch,branch_bugfix_1_0,基于这个branch进行bugfix,等到bugfix结束,做一个tag,取名为tag_release_1_0_1,然后,根据需要决定branch_bugfix_1_0是否并入trunk版本中。

注:对于svn还要注意的一点,就是它是全局版本号,其实这个就是一个tag的标记,所以我们经常可以看到,什么什么release,基于xxx项目的1xxxx版本。就是这个意思了。但是,它还明确的给出一个tag的概念,就是因为这个更加的可读,毕竟记住tag_release_1_0要比记住一个很大的版本号容易的多。

 

cvs中的branch和tag
branch, "分支"指不同需求或功能差异很大的同一系统的不同产品线,每一个新的产品线都可以演化成新的产品,branch一般在产生新的产品线的时候创建。

tag, "标记"经过QA人员测试之后的,确认达到要求时才创建的类似历史记录的标记,tag是记录版本历史的里程碑,tag是不可修改的。

我们checkout时指定版本的branch,可以取出该分支的最新的代码,进行修改之后,可以commit回cvs中去。
我们checkout时指定版本的tag,可以取出创建该标记时刻的代码,从该tag中取出的代码是反映历史的、不可修改的

一个系统可以包含多个tag和branch,tag只能属于某个branch,一个branch可以包含多个tag。
默认的branch是Main,分支Main最新代码的tag是默认的Head标签。新的branch可以创建新的自定义名称,新的tag可以创建新的自定义名称。





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51239

订阅本站:http://www.wangyuxiong.com/feed

分类: 工具推荐 测试技术         标签: , , , ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量