【SVN】svn代码管理中Trunk、Branches、Tags的区别和联系

原文:http://www.dreamwu.com/post-1604.html

我们可以将这三者想象成一棵树的组成部分
trunk         为树干
branches  为树枝
tags          为整棵树


trunk        用于主线开发
branches 用于定制版本、修复bugs、并行开发等使用
tags          用于存放release版本,阶段性代码,不用于修改和commit


在branches开发时,要时常从trunk中更新到branches中,用于同步

当branches开发完成时,就可以将branches重新merge到trunk中

主干(trunk)、分支(branch )、标记(tag) 用法示例 + 图解

以svn为例,git的master相当于trunk,dev分支相当于branches

--------------------------------------------------------------------------------------------------------------------------------

trunk:是用来做主方向开发的一直向前进行,一个新模块的开发,这个时候就放在trunk,当模块开发完成后,需要修改,就用branch。  

branch:是用来做并行开发的,这里的并行是指和trunk进行比较。  

tag:是用来做一个milestone(里程碑)的,不管是不是发布版本,但都是一个可用的版本,不需要修改如果要修改就要选一个tag进行branche开发。  

--------------------------------------------------------------------------------------------------------------------------------------------

为什么要分3个目录?且都是重复的代码重新Copy?来看下下面这个例子就明白这样做的好处了。

例如:开发一个聊天软件QQ,第一期只要求软件具有基本的聊天功能,后期会加入视屏聊天、魔法表情、换皮肤等功能。

当第一期开发完,经测试人员测试后没问题。此时应该给予当前代码库打tag命名为QQ_tag_release_v1.0.0,同时trunk如火如荼进入v2.0.0开发,但是此时经广大用户反馈v1.0.0的QQ登录后经常闪退,由于v2.0.0正在开发即使bug改了也发布不了。那么就要基于QQ_tag_release_v1.0.0的标记(tag)做一个分支(branch)命名为QQ_branch_bugfix_v1.0.0并基于这个分支快速进行BUG修改,等到BUG修改结束后做一个tag命名为QQ_tag_release_v1.0.1,根据需要决定QQ_branch_bugfix_v1.0.0是否合并(Merge)并入主干(trunk)。

图:https://www.cnblogs.com/YingYue/p/6118972.html

 

 

 

 

posted on 2022-10-04 01:23  bdy  阅读(228)  评论(0编辑  收藏  举报

导航