百科狗-知识改变命运!
--

SVN中tag和branch的区别

小肉包11个月前 (12-18)阅读数 5#综合百科
文章标签标记版本

从svn命令操作的角度,branches和tags是一样的,都是分支标记功能,两者的区别主要在于默认的使用用途。

一般来说:

1、branches下用于存放“分支”,比如用于测试的分支、用于不同版本开发的分支、用于缺陷处理的分支等等,“分支”下存放的内容是会继续修改的;

2、tags下用于存放“标记”,比如某个发布版本的标记,“标记”下存放的内容通常来说是固定不变的。

比如:开发进行到1.0版本测试完成,要进行对外软件发布了,同时项目组后续会拆分成两个小组,一个小组负责1.0版本的BUG维护,另一个小组开始在1.0基础上进行2.0版本的开发。此时,就可以把当前版本从trunk拉到tags下一份,标记为release1_0,然后对外发布时就从这个文件夹获取;然后再把当前版本拉到branches下一份,标记为bugfix1_0,负责1.0版维护的小组以后就在这个文件夹下进行修复工作,负责2.0版开发的小组继续在trunk下工作。

从配置管理的角度来看,打基线就是把库中的某些内容打个标记,就是拖到tags文件夹下。

SVN中tag和branch的区别

在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆。

在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别。

至于何时用tag,何时用branch,完全由人主观的根据规范和需要来选择,而不是强制的(比如cvs)。

一般情况下,tag是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里应该是只读的。更多的是一个显示用的,给人一个可读(readable)的标记。branch,是用来做并行开发的,这里的并行是指和trunk进行比较。

比如,3.0开发完成,这个时候要做一个tag,tag_release_3_0,然后基于这个tag做release,比如安装程序等。trunk进入 3.1的开发,但是3.0发现了bug,那么就需要基于tag_release_3_0做一个branch,branch_bugfix_3_0,基于这 个branch进行bugfix,等到bugfix结束,做一个tag,tag_release_3_0_1,然后,根据需要决定 branch_bugfix_3_0是否并入trunk。

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

注:svn里面的创建tag/branch操作都是通过copy命令来实现的:在svn里面tag和branch没有啥区别,只是赋予了它们不同的含义以便于形成分支开发的概念。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)