以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仓库单项目/多项目仓库都可以,结构如下图这样

2、新建资源库

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

如下

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

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

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

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

下一步”Next“

填写注释后点击”Finish“

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

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

看一下这时的svn资源库

此时经广大用户反馈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

更改路径后点击”OK“

已经切换到标记的QQ_tag_release_v1.0.0

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

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

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

点击”Next“

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

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

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

提交修改bug后的代码

提交后

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

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

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

点击”Next“

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

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

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

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

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

步 骤:

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

(略过。。。 上面有)

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

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

4. 点击”Finish“ 结束合并

5. 点击”OK“

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

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

8. 提交合并后的代码

9. 提交后如下

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

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

转载于:https://www.cnblogs.com/YingYue/p/6118972.html

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

  1. SVN中trunk、branch、tag区别

    虽然一直都在用svn作项目管理,但是一直都是傻傻的分不清主干.分支.今天小编就来详细介绍一下: [branch] 分支:版本控制系统的一个特性就是能够把各种修改分离出来放在开发品的一个分割线上.这条线 ...

  2. 【SVN】SVN的trunk、branches、tag的使用以及分支的概念

    SVN命令参考: https://www.cnblogs.com/wlsxmhz/p/5775393.html svn的存储结构一般建议在根目录下建立trunk.branches.tags这三个文件夹 ...

  3. SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤

    一:使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发.测试并已经上线了,接下来接到新的需求,新需求的开发需要修改多个文件中的代码,当需求已经开始开发一段时间 ...

  4. 【转】SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤

    转自:https://monday.blog.csdn.net/article/details/51122637 一:使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已 ...

  5. svn 主干(trunk)、分支(branch )、标记(tag) 简介

    在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆. 在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别.至于何时用tag ...

  6. Subversion存储库中“分支”,“标记”和“主干”的含义是什么?

    我已经在Subversion(我猜通用存储库)讨论中看到了很多这样的话. 在过去的几年里,我一直在为我的项目使用SVN,但我从未掌握过这些目录的完整概念. 他们的意思是什么? #1楼 现在这就是软件开 ...

  7. svn 分支(branch)和标签(tag)管理

    版本控制的一大功能是可以隔离变化在某个开发线上,这个开发线就是分支(branch). 分支通常用于开发新功能,而不会影响主干的开发.也就是说分支上的代码的编译错误.bug不会对主干(trunk)产生影 ...

  8. 交换机应用之端口模式(access、trunk和hybird)、是否标记(tag、untag)、端口缺省vlan(pvid、native id)...

    一.概述 打不打标记Tag,untag以及交换机的各种端口模式是网络工程技术人员调试交换机时接触最多的概念了.标记tag就是指VLAN的标签,数据包属于哪个VLAN的.交换机三种端口模式Access ...

  9. 交换机应用之端口模式(access、trunk和hybird)、是否标记(tag、untag)、端口缺省vlan(pvid、native id)

    一.概述 打不打标记Tag,untag以及交换机的各种端口模式是网络工程技术人员调试交换机时接触最多的概念了.标记tag就是指VLAN的标签,数据包属于哪个VLAN的.交换机三种端口模式Access ...

最新文章

  1. Python-从视频到gif(imageio,moviepy,ffmpeg)
  2. [BUUCTF-pwn]——[ZJCTF 2019]EasyHeap
  3. NASA公布“门户计划”,在月球轨道建立空间站进一步探索月球
  4. 开源代码ViewPageIndicator的使用
  5. 古风一棵桃花树简笔画_为什么,很多农村家庭的院子里,会喜欢种一棵樱桃树呢?...
  6. js实现撤销恢复_电脑硬盘丢失的资料怎么恢复?选对方法是关键
  7. Redis:复制,第2部分——主从复制和Redis哨兵
  8. 微信小程序API 文档快速参考索引
  9. 整体二分——[Poi2011]Meteors
  10. linux 下 pip 安装教程6,在CentOS下安装pip
  11. 【图像融合】基于matlab curvelet变换图像融合(评价指标)【含Matlab源码 781期】
  12. 团队的远程管理_管理远程团队的4种方法
  13. 91地图坐标系矫正教程
  14. 制作bt种子(非pt站私有种)
  15. 边缘计算与深度学习——初读研究生的迷茫
  16. 机器学习-西瓜书-模型评估
  17. chrome谷歌浏览器安装插件
  18. OSChina 周五乱弹 —— 那地图上的点到底去哪儿
  19. 任正非女儿孟晚舟成华为轮值董事长 公司年利润1137亿
  20. java企业级应用开发项目总结报告,基于Java软件项目开发岗位的企业实践总结报告...

热门文章

  1. 高斯消元法的c语言编程,用C语言编程高斯全主元消元法
  2. WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!的分析
  3. dcos -1.7 都有哪些服务
  4. imputation文献-A systematic evaluation of single-cell RNA-sequencing imputation methods
  5. Endurance International Group任命曼尼什达拉尔为亚太区董事总经理
  6. STM32使用HSE/HSI配置时钟(六)
  7. 硬件设计--DC/DC电源芯片详解
  8. 基于STM32的四足机器人
  9. pm2 for linux
  10. 服务器信号切换机,KH1508Ai-远程KVM多电脑切换器-南京明高——MOXA工业互联网全系列产品销售服务平台 工业交换机,串口服务器,工业无线,嵌入式计算机,现场总线网关,接口转换器...