主干(trunk)、分支(branch )、标记(tag)

摘要:
主干、分支和标签用法示例+图表以svn为例。git的master相当于trunk,dev分支相当于分支----------------------------------------------------------------------------------------------------------------------------------------------------------trunk:它用于在主方向上开发一个新模块。模块开发完成后,要修改,请使用分支。此时,将当前代码库标记为QQ_ tag_ release_。与此同时,主干正在全面进入v2.0.0开发阶段。然而,QQ登录到v1.0.0,用户经常会闪回。由于v2.0.0正在开发中,即使bug已更改,也无法发布。
主干(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)。

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

步骤:

1、新建svn仓库单项目/多项目仓库都可以,结构如下图这样

主干(trunk)、分支(branch )、标记(tag)第1张

2、新建资源库

主干(trunk)、分支(branch )、标记(tag)第2张

填写URL仓库地址点击“Finish”

主干(trunk)、分支(branch )、标记(tag)第3张

如下

主干(trunk)、分支(branch )、标记(tag)第4张

新建qq项目导入svn的trun目录(选中项目右键Team-->Share Projects...)

主干(trunk)、分支(branch )、标记(tag)第5张

导入后项目后的svn仓库如下

主干(trunk)、分支(branch )、标记(tag)第6张

由于紧锣密鼓的工作v1.0.0终于开发完(v1.0.0只有基本的聊天功能),经测试没有发现问题可以提供给用户使用,同时在此代码库上打一个tag版本命名为QQ_tag_release_v1.0.0  

选中项目右键 “Team--> 分支/标记... ” 填写要打tag的版本号后点击”Next“

主干(trunk)、分支(branch )、标记(tag)第7张

下一步”Next“

主干(trunk)、分支(branch )、标记(tag)第8张

填写注释后点击”Finish“

主干(trunk)、分支(branch )、标记(tag)第9张

这时svn资源库tag目录下会多了个QQ_tag_release_v1.0.0

主干(trunk)、分支(branch )、标记(tag)第10张

同时trunk如火如荼进入v2.0.0开发,视屏聊天功能正在开发

主干(trunk)、分支(branch )、标记(tag)第11张

看一下这时的svn资源库

主干(trunk)、分支(branch )、标记(tag)第12张

此时经广大用户反馈v1.0.0的QQ登录后经常闪退,由于v2.0.0正在开发即使bug改了也发布不了。那么就要基于QQ_tag_release_v1.0.0的标记(tag)做一个分支(branch)命名为QQ_branch_bugfix_v1.0.0

选择项目右键 ”Team“-->”切换(S...)“ 选择tags的QQ_tag_release_v1.0.0

主干(trunk)、分支(branch )、标记(tag)第13张

更改路径后点击”OK“

主干(trunk)、分支(branch )、标记(tag)第14张

已经切换到标记的QQ_tag_release_v1.0.0

主干(trunk)、分支(branch )、标记(tag)第15张

接下来要以QQ_tag_release_v1.0.0 为基础创建一个branch名为QQ_branch_bugfix_v1.0.0并基于这个分支快速进行BUG修改

选中项目右键 “Team--> 分支/标记... ” 点击 ”浏览...“ 选择branches目录

主干(trunk)、分支(branch )、标记(tag)第16张

填写要创建分支(branch)名为 ”QQ_branch_bugfix_v1.0.0“ 后点击 ”Next“

主干(trunk)、分支(branch )、标记(tag)第17张

点击”Next“

主干(trunk)、分支(branch )、标记(tag)第18张

填写注释后选中 ”切换工作复本为新的分支/标记“ 后 点击 ”Finish“

主干(trunk)、分支(branch )、标记(tag)第19张

看下工作空间的和svn资源库的变化

主干(trunk)、分支(branch )、标记(tag)第20张

在branch分支名为 ”QQ_branch_bugfix_v1.0.0“ 中修改bug

主干(trunk)、分支(branch )、标记(tag)第21张

提交修改bug后的代码

主干(trunk)、分支(branch )、标记(tag)第22张

提交后

主干(trunk)、分支(branch )、标记(tag)第23张

闪退bug已经修改可以提供给用户使用了,接下来要再打一个tag命名为 ”QQ_tag_release_v1.0.1“

选中名为”QQ_branch_bugfix_v1.0.0“ 的分支项目右键 “Team--> 分支/标记... ” 点击 ”浏览...“ 选择tags目录

主干(trunk)、分支(branch )、标记(tag)第24张

填写要创建标记(tag)名为 ”QQ_tag_release_v1.0.1“ 后点击 ”Next“

主干(trunk)、分支(branch )、标记(tag)第25张

点击”Next“

主干(trunk)、分支(branch )、标记(tag)第26张

填写注释信息后点击”Finish“

主干(trunk)、分支(branch )、标记(tag)第27张

来看看资源库中有什么变化,tags目录下多了一个名为”QQ_tag_release_v1.0.1“ 的标记

主干(trunk)、分支(branch )、标记(tag)第28张

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

下面演示 将 分支(branches) 合并到 主干(trunk)

根据需要决定将分支名为 ”QQ_branch_bugfix_v1.0.0“ 的branch 合并(Merge)并入主干(trunk)。 

步 骤:

1. 要想将分支合并到主干,首先需要切换到主干。
在项目上面点右键,选择Team — 切换,URL地址为主干的访问路径

(略过。。。 上面有)

主干(trunk)、分支(branch )、标记(tag)第29张

2. 在项目上面点右键,选择 ”Team“--> ”合并(M)...“ ,选中“Reinitegrate a branch”。

主干(trunk)、分支(branch )、标记(tag)第30张

3. 选择要合并到主干的分支”QQ_branch_bugfix_v1.0.0“

主干(trunk)、分支(branch )、标记(tag)第31张

4. 点击”Finish“ 结束合并

主干(trunk)、分支(branch )、标记(tag)第32张

5. 点击”OK“

主干(trunk)、分支(branch )、标记(tag)第33张

6. 如果想要撤销合并选中项目右键”Undo merge...“ 

主干(trunk)、分支(branch )、标记(tag)第34张

 7. trunk中的qq项目下就会多了从分支”QQ_branch_bugfix_v1.0.0“里Merge合并的代码

主干(trunk)、分支(branch )、标记(tag)第35张

8. 提交合并后的代码

主干(trunk)、分支(branch )、标记(tag)第36张

9. 提交后如下

主干(trunk)、分支(branch )、标记(tag)第37张

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

一般的,我们的所有的开发都是基于trunk进行开发,当一个版本/release开发告一段落(开发、测试、文档、制作安装程序、打包等)结束后,代码处于冻结状态(人为规定,可以通过hook来进行管理)。此时应该基于当前冻结的代码库,打tag。当下一个版本/阶段的开发任务开始,继续在trunk进行开发。
此时,如果发现了上一个已发行版本(ReleasedVersion)有一些bug,或者一些很急迫的功能要求,而正在开发的版本(DevelopingVersion)无法满足时间要求,这时候就需要在上一个版本上进行修改了。应该基于发行版对应的tag,做相应的分支(branch)进行开发。

免责声明:文章转载自《主干(trunk)、分支(branch )、标记(tag)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Storyboard新手入门(一)五大主流浏览器及内核下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一梦江湖费六年——QQ群聊天分析

本文结构: 一、那些年我们加过的QQ群 二、数据读入和整理(一)——来自蓝翔的挖掘机 二、数据读入和整理(二)——你不知道的事 三、聊天宏观(1)——寤寐思服 三、聊天宏观(2)日月篇 三、聊天宏观(3)七曜篇 四、聊天微观(1)——黄金档和午夜频道 四、聊天微观(2)——充电两小时聊天五分钟 四、聊天微观(3)——幸存者偏...

批处理文件——多个QQ一键登录

       偶然看到有的同学登录PC的QQ,发现他有很多QQ,每登录一个要切换一个,虽然记住了密码,但还是不方便,于是想通过批处理来实现“一键登录”的功能。以下内容为本文假想,如有雷同,实属巧合!        具体的实现步骤如下:        (1)首先,查看QQ安装时的文档位置(用于保存用户登录历史记录),我的是:C:UsersDavidDocum...

TortoiseGit Manual 学习

在线文档https://tortoisegit.org/docs/tortoisegit/ Preface 1. Introduction 2. TortoiseGit Daily Use Guide 3. The GitWCRev Program Glossary Index Preface Audience Reading Guide Tortoise...

java实现发送QQ邮箱

一、前期准备 准备两个qq邮箱号,本例使用的是自己的两个邮箱 syc582535560@foxmail.com 2212444549@qq.com 下载javax.mail.jar jar包 如使用maven,在pom.xml里添加 <dependency><groupId>javax.mail</groupId><...

怎样在 Firefox 中打开 QQ 链接和邮箱

转贴自  猫言猫语 虽然现在很喜欢用小巧、简洁的 Gtalk,但是 QQ 的群众基础还是太深厚了,几乎所有的同学朋友都是人手至少一个,而且 QQ 还有一些 Gtalk 没有的功能(发图、传文件等),所以 QQ 目前还是我用的最多的即时通讯软件。 如果你也在用 QQ ,而且也是 Firefox 的忠实用户的话,你有没有遇到过这样的问题:朋友通过 QQ 发来的...

Android(1.5) 开机图片/文字/动画 修改

Android(1.5) 开机图片/文字/动画 修改     Android 开机会出现3个画面:a. Linux 系统启动,出现Linux小企鹅画面(reboot);b. Android平台启动初始化,出现"A N D R I O D"文字字样画面;c. Android平台上层图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。1/...