`

SVN的trunk branch tag

 
阅读更多

SVN的trunk branch tag http://lelglin.iteye.com/blog/1450654

 

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版本控制方案

    规范如何使用SVN trunk branch tag

    svn_主干(trunk)_分支(branck)_标记(tag)的原理及操作

    介绍了svn主干,分支和标记的相关概念、相互关系及有关的操作方法

    SVN trunk, branch, tag merge 等的应用

    NULL 博文链接:https://linleizi.iteye.com/blog/1962031

    4.1、SVN trunk(主线) branch(分支) tag(标记) 1

    很显然不能在当前开发的代码基础上进行bug修复工作完美的解决方案是:在当时完成的那个版本中进行bug fix,这样带来的好处是:1:bug修复好之后可立即上线,

    SVN的标准目录结构:trunk、branches、tags

    当需要建立 branch 或 tag 时,可以使用 SVN 中的 copy 操作,例如,从 trunk 中 copy 到 branches 中,或者从 trunk 中 copy 到 tags 中。 权限控制 在 SVN 中,可以使用 authz 文件控制目录的访问权限。例如,...

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

    资源中有 SVN 主干(trunk)、分支(branch )、标记(tag) 的详细解释,和作用 并带 SVN分支与合并 的详细操作文档(附图)。 SVN分支与合并的总结 1.分支(branche)的创建。 1、分支创建是建立在主干上的。 2、创建...

    SVN中的Branches分支以及Tags标签详解与应用举例

    创建 Branch 分支或者 Tag 标签非常容易,只需要在 TortoiseSVN 中创建对应的文件夹,然后将其提交到 SVN 服务器中。例如,创建一个名为 v1.0 的分支,用于发布一个版本的文件。 Branches 分支的修改和使用 Merge ...

    svn目录使用规范.doc

    1、选中项目,就是trunk下的本地项目,右击,选中Branch/Tag,出现如下对话框。 下图中的配置完成了之后,点击OK即可完成“打标签/分支”。 2、直接在SVN上在对应的标签/分支目录下创建对应的版本文件夹,将...

    SVN安装和深入理解分支和模拟实践

    三、trunk(主线) branch(分支) tag(标记)  1、SVN仓库目录结构Repository 2、trunk(主干|主线) branchs(分支) tags(标记)作用 3、SVN具体操作步骤 3.1、TortoiseSVN创建仓库 3.2结合eclipse上传项目 四、测试主干和...

    httpd2.2.12.tar

    checking out SVN trunk to confirm that a bug has been corrected. And as all code was well-tested in development prior to committing to the stable tree, there is really no reason for this tree to be...

Global site tag (gtag.js) - Google Analytics