Subversion有一个很标准的目录结构,是这样的。
比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是

svn://proj/|+-trunk+-branches+-tags
这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯。

对于这几个开发目录,一般的使用方法有两种。我更多的是从软件产品的角度出发(比如freebsd),因为互联网的开发模式是完全不一样的。
第一种方法,使用trunk作为主要的开发目录。
一般的,我们的所有的开发都是基于trunk进行开发,当一个版本/release开发告一段落(开发、测试、文档、制作安装程序、打包等)结束后,代码处于冻结状态(人为规定,可以通过hook来进行管理)。此时应该基于当前冻结的代码库,打tag。当下一个版本/阶段的开发任务开始,继续在trunk进行开发。
此时,如果发现了上一个已发行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在开发的版本(Developing Version)无法满足时间要求,这时候就需要在上一个版本上进行修改了。应该基于发行版对应的tag,做相应的分支(branch)进行开发。
例如,刚刚发布1.0,正在开发2.0,此时要在1.0的基础上进行bug修正。
按照时间的顺序

1.0开发完毕,代码冻结
基于已经冻结的trunk,为release1.0打tag
此时的目录结构为
svn://proj/+trunk/ (freeze)+branches/+tags/+tag_release_1.0 (copy from trunk)
2.0开始开发,trunk此时为2.0的开发版
发现1.0有bug,需要修改,基于1.0的tag做branch
此时的目录结构为
svn://proj/+trunk/ ( dev 2.0 )+branches/+dev_1.0_bugfix (copy from tag/release_1.0)+tags/+release_1.0 (copy from trunk)
在1.0 bugfix branch进行1.0 bugfix开发,在trunk进行2.0开发
在1.0 bugfix 完成之后,基于dev_1.0_bugfix的branch做release等
根据需要选择性的把dev_1.0_bugfix这个分支merge回trunk(什么时候进行这步操作,要根据具体情况)
这是一种很标准的开发模式,很多的公司都是采用这种模式进行开发的。trunk永远是开发的主要目录。

第二种方法,在每一个release的branch中进行各自的开发,trunk只做发布使用。
这种开发模式当中,trunk是不承担具体开发任务的,一个版本/阶段的开发任务在开始的时候,根据已经release的版本做新的开发分支,并且基于这个分支进行开发。还是举上面的例子,这里面的时序关系是。

1.0开发,做dev1.0的branch
此时的目录结构
svn://proj/+trunk/ (不担负开发任务 )+branches/+dev_1.0 (copy from trunk)+tags/
1.0开发完成,merge dev1.0到trunk
此时的目录结构
svn://proj/+trunk/ (merge from branch dev_1.0)+branches/+dev_1.0 (开发任务结束,freeze)+tags/
根据trunk做1.0的tag
此时的目录结构
svn://proj/+trunk/ (merge from branch dev_1.0)+branches/+dev_1.0 (开发任务结束,freeze)+tags/+tag_release_1.0 (copy from trunk)
1.0开发,做dev2.0分支
此时的目录结构
svn://proj/+trunk/ +branches/+dev_1.0 (开发任务结束,freeze)+dev_2.0 (进行2.0开发)+tags/+tag_release_1.0 (copy from trunk) 

1.0有bug,直接在dev1.0的分支上修复

本文转自 小强测试帮 51CTO博客,原文链接:http://blog.51cto.com/xqtesting/1319698,如需转载请自行联系原作者

SVN的trunk branch tag相关推荐

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

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

  2. SVN trunk branch tags 区别

    Trunk: 主工作目录,从开始编码到当下所有开发功能,测试,最新代码. Branches: 分支目录 1.Truank的重要版本发布后 创建一个分支上后可修复Bug; 2. 在不影响Trunk的前提 ...

  3. SVN版本管理trunk及branch相关merge操作

    先说说什么是branch.按照Subversion的说法,一个branch是某个development line(通常是主线也即trunk)的一个拷贝,见下图: branch存在的意义在于,在不干扰t ...

  4. SVN中Branch/tag的比较

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

  5. 小乌龟中svn使用trunk与brunch与tag

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

  6. SVN中trunk,branches,tags用法详解

    Subversion有一个很标准的目录结构,是这样的. 比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-t ...

  7. SVN中trunk、branch、tag区别

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

  8. SVN中trunk、branches、tag的使用

    我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说明SVN里的trunk,branched,tags这个三个文件目录的用法. ...

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

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

最新文章

  1. 我国在计算机科学领域故事,我国巨型计算机领域的一代天骄
  2. 马斯克近日表示:Neuralink脑机接口有望明年用于人类
  3. 排序算法(二)--堆排序(JAVA)
  4. loadrunner如何监控linux,以及重点指标分析
  5. 微信又有大更新!新增多款铃声、腾讯电子签等功能
  6. matlab初学者教程_初学者的Hibernate教程
  7. 如何刷新linux的fdisk,②linux fdisk
  8. 可视化编辑json数据——json editor
  9. Axure 安装教程
  10. signingConfigs
  11. 苹果电脑怎么打开计算机管理,mac开机启动管理怎么设置_mac如何设置开机启动管理-win7之家...
  12. chrome浏览器使用方法介绍
  13. 【微信小程序】uniapp开发小程序如何使用微信云托管或云函数进行云开发
  14. 一文看懂PPP协议——PPP协议简介
  15. 安装tensorflow---目前还没有支持windows
  16. 字符串和数组的长度 java c++
  17. Element-UI 组件MessageBox 弹框 关闭遮罩层
  18. keras+learning
  19. Python比较两个日期大小
  20. 【小程序源码】星座运势,周公解梦下载

热门文章

  1. sicp 2.3-2.5 习题
  2. Mybatis foreach 批量插入
  3. Apache2.4.29+Tomcat 8.5.29负载均衡群集最强解析
  4. 【Android】Android6.0发送短信Demo
  5. 解决mysql5数据库连接超时问题
  6. 步步为营:Asp.Net序列化与反序列化
  7. 放纵的感觉其实没有想象的那么好!
  8. 360公司2019秋季校园招聘内部推荐启动啦!!!
  9. shell脚本手动执行成功,定时任务调用失败的解决方法。
  10. mapreduce工作流程_我要进大厂之大数据MapReduce知识点(2)