SVN中trunk,branches,tags用法详解.docx_第1页
SVN中trunk,branches,tags用法详解.docx_第2页
SVN中trunk,branches,tags用法详解.docx_第3页
SVN中trunk,branches,tags用法详解.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SVN中trunk,branches,tags详细解说详解11.trunk是主分支,是日常开发进行的地方。2.branches是分支。一些阶段性的release(发布、发行)版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。又比如为不同用户客制化的版本,也可以放在分支中进行开发。3.tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。注意:svn并没有明确的规范,更多的还是用户自己的习惯。下面是详细介绍:比如一个项目有main.cpp, common.h两个文件,假设目前在开发的是最新的3.0版本,而且1.0/2.0版本也在进行维护,那么项目树将类似如下样子:project|+- trunk+ |+ +- main.cpp (3.0版本的最新文件)+ +- common.h+- branches+ |+ +- r1.0+ + |+ + +- main.cpp (1.x版本的最新文件)+ + +- common.h + + +- r2.0+ |+ +- main.cpp (2.x版本的最新文件)+ +- common.h+ +- tags (此目录只读)|+- r1.0+ |+ +- main.cpp (1.0版本的发布文件)+ +- common.h +- r1.1+ |+ +- main.cpp (1.1版本的发布文件)+ +- common.h+- r1.2+ |+ +- main.cpp (1.2版本的发布文件)+ +- common.h +- r1.3+ |+ +- main.cpp (1.3版本的发布文件)+ +- common.h+- r2.0+ |+ +- main.cpp (2.0版本的发布文件)+ +- common.h +- r2.1|+- main.cpp (2.1版本的发布文件)+- common.h要使用这样的文件夹结构,在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录,再将项目文件夹连同这三个子目录一起导入版本库。这样在trunk中开始进行开发,当需要建立branch或tag时,使用SVN的copy操作进行。其中tags目录需要只读,可以使用SVN中的authz文件控制该目录的访问权限为只读.详解2Subversion有一个很标准的目录结构,是这样的。比如项目是proj,svn地址为svn:/proj/,那么标准的svn布局是svn:/proj/|+-trunk+-branches+-tags这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯。对于这几个开发目录,一般的使用方法有两种。我更多的是从软件产品的角度出发(比如freebsd),因为互联网的开发模式是完全不一样的。 1.第一种方法,使用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永远是开发的主要目录。2.第二种方法,在每一个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分支此

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论