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的分支上修复
此时的目录结构
svn://proj/
+trunk/
+branches/
+dev_1.0 (1.0bugfix)
+dev_2.0 (进行2.0开发)
+tags/
+tag_release_1.0 (copy from trunk) - 选择性的进行代码merge
这其实是一种分散式的开发,当各个部分相对 独立一些(功能性的),可以开多个dev的分支进行开发,这样各人/组都不会相互影响。比如dev_2.0_search和dev_2.0_cache 等。但是这样merge起来就是一个很痛苦的事情。
这里要注意一下的,第六步进行选择性的merge,是可以当2.0开发结束后一起把 dev_1.0(bugfix用)和dev_2.0(新版本开发 用)merge回trunk。或者先把dev_1.0 merge到dev_2.0,进行测试等之后再merge回trunk。
这两种方法各有利弊,第一种方法是可以得到一个比较纯的dev_2.0的 开发分支,而第二种方法则更加的保险,因为要测试嘛。
以上呢,就是我说的两种开发模式了,具体哪种好,并没有定论。这里大致的说一下各自 的优缺点
第一种开发模式(trunk进行主要开发,集中式):
优点:管理简单
缺点:当开发的模块比较多,开发人数/小团队比较多 的时候,很容易产生冲突而影响对方的开发。因为所有的改动都有可能触碰对方的改动
第二重开发模式(分支进行主要开发,分散式):
优点:各 自开发独立,不容易相互影响。
缺点:管理复杂,merge的时候很麻烦,容易死人。
其实,这里并没有一定之规,更多的时候是两种 模式结合使用。
相关推荐
linux
银行秒杀系统 第十三服创比赛项目
单页登录源码 login登录页源码 html源码
理性力学 陈至达.pdf
JAVA在线考试管理系统(源代码+论文+开题报告+外文翻译+英文文献+答辩PPT)
加州房价预测是一个经典的机器学习案例,旨在通过给定的一些特征来预测加州地区房屋的中位数价格。这个案例通常使用监督学习算法来解决: 其中包括以下步骤: 数据收集:收集加州地区的房屋数据,包括房屋的各种特征,如房屋的位置、面积、卧室数量、人口密度等。 数据预处理:对收集到的数据进行清洗和处理,包括处理缺失值、异常值和重复值,进行特征选择和特征缩放等。 特征工程:根据问题的背景和数据的特点,进行特征工程,提取更有意义和相关性的特征。例如,可以通过计算每个区域的人均收入、房屋间距离海洋的距离等特征。 模型选择:选择适合解决这个问题的机器学习模型。常用的模型包括线性回归、决策树、支持向量机、神经网络等。 模型训练:使用训练数据对选定的模型进行训练,通过调整模型参数来最小化预测误差。 模型评估:使用测试数据对训练好的模型进行评估,常用的评估指标包括均方误差和决定系数等。 模型优化:根据评估结果,对模型进行优化,可以尝试调整模型参数、增加更多的特征、尝试其他算法等。 模型应用:使用优化后的模型进行加州房价的预测,可以输入新的特征数据,得到预测的房价。
web单页html主页老款 旧风格 管理页源码
旅游大数据HTML模板源码 大数据大屏展示源码 VUE
moood UI KitAdobeXD源码下载设计素材UI设计
生物信息学课程学习笔记第四版2022版
在校时,参加的创新创业比赛的项目,我负责前端Vue模块
AProject_Inner_Responsive_TemplatesAdobeXD源码下载设计素材UI设计
基于STM32的智能台灯 项目概述 该智能台灯能够实时监测环境光照强度,并根据环境亮度调整LED灯的亮度,亦可通过面板对台灯进行手动控制,从而实现智能护眼和节能的目的。 功能描述 1.环境感知功能:实时监测环境光照强度 2.信息显示功能:显示亮度等提示信息 3.面板控制功能:模式和光照等级切换 4.远程控制功能:远程开关LED灯 中断级调度任务 1.面板控制任务 2.环境感知任务 3.远程控制任务
HTML4-Desktop-App模板官网落地页APP主页产品宣传页源码 landing静态页面
自己学习机器学习算法过程中写的一些代码,由于换了个方向,暂时没法继续手写实现下去了。
名称 范围 默认参数 系统 ①低功耗系统 ②非低功耗系统 ① 功耗 不广播状态 1uA 广播状态200ms 0.14mA 广播配置 广播间隔时间: 间隔广播(20ms-2000ms) 200ms 广播数据: 设备名称 “Sensor” 制造商数据: FF 前两字节公司ID FFC1 A数据(uint16_t) 1001 B数据(uint16_t) 2001 C数据(uint16_t) 3001 D数据(uint16_t) 4001 E数据(uint16_t) 5001 F数据(uint16_t) 6001 G数据(uint16_t) 7001
因为在我们刷题的过程中,一定可以刷到一些难度很高却十分简单的题,俗话说就是“占着毛肯不拉屎”的水题,下面我就分享几个,因为虽然简单,但难度标准高,所以可以增加等级,刷题量,排名。那是多好的事啊,所以如果你有oj账号,那直接去用。没有没关系,你可以注册一个oj账号,那还等什么,赶紧行动吧!!!!!!!!!
AEM-CoreComponents-UI-KitAdobeXD源码下载设计素材UI设计
电子密码锁使用说明(1).doc
c++语言学生成绩管理文字版.zip;c++语言学生成绩管理文字版.zip;c++语言学生成绩管理文字版.zip