`
kenny_liu
  • 浏览: 14656 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论
阅读更多

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分支管理模式解析.docx

    单主干-串行开发模式 - **使用场景**:适用于只需要维护一个版本的项目,例如,产品仅有一个版本面向市场,且每次发布的新版本都需要覆盖旧版本的情况。 - **结构模式**:项目通常包含一个主干(Trunk),以及用于...

    SVN中文教程 SVN简明教程 SVN学习笔记

    SVN,全称为Subversion,是一款广泛应用于软件开发领域的版本控制...在实际工作中,结合具体的项目需求和团队协作模式,灵活运用SVN,能够提升开发效率,保证代码质量。记得持续学习和实践,才能充分挖掘SVN的潜力。

    svn服务器配置总结

    ### SVN服务器配置总结 #### 一、准备工作 在配置SVN服务器之前,我们需要做一些准备工作,主要包括获取Subversion服务器程序及TortoiseSVN客户端程序。 ##### 1、获取 Subversion 服务器程序 - **访问官方网站*...

    svn--项目管理工具[总结版]

    另外,SVN还支持锁定-修改-解锁的模式,但这种方式并不适合软件开发,因为它限制了开发者的并发性。 #### 四、SVN服务器端配置 ##### 1. 安装方式 SVN的服务端可以通过两种方式进行部署: - **独立服务器方式**...

    svn与cvs对比

    这种模式下,一旦批量操作因网络故障或客户端问题中断,版本库可能处于不一致状态,影响项目编译和团队开发效率。 - **SVN**:SVN采取事务性的提交策略。所有文件的提交被视为一个整体,即原子操作。若提交过程中...

    开发工具svn

    4. **忽略文件**:在`.svnignore`文件中指定不需要版本控制的文件或目录模式。 5. **日志与检索**:`svn log`查看版本历史,`svn export`导出特定版本的文件。 6. **恢复与撤销**:误操作时,`svn revert`可以撤销...

    jdk,svn,eclipse,等开发大全

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结并生成一系列与开发必备工具相关的知识点,主要聚焦于JDK、SVN、Eclipse等核心软件及其在软件开发中的应用。 ### JDK(Java Development Kit) #### 1. ...

    svn笔记资料

    其中复制-修改-合并是SVN的默认模式,更适用于软件开发场景。 2. **SVN服务器的搭建**: - **独立服务器方式**:使用`svnserve`命令进行服务端配置。 - **借助Apache服务器**:通过`mod_dav_svn`模块集成到Apache...

    SVN高级使用指南

    总结,SVN的高级使用不仅涉及模块化开发中的协同工作,还包括了灵活的分支和标签策略,以适应不同开发阶段的需求。正确使用这些技巧能显著提高团队效率,保证代码的稳定性和可追溯性。在实际操作中,应结合团队的...

    svn使用说明

    SVN采用了客户/服务器模式,支持两种主要的操作模式: 1. **复制-修改-合并**:这是SVN默认采用的模式。每个用户从版本库中获取一份最新的代码副本,在本地进行修改,然后将这些修改合并回主版本库。这种方式适合于...

    svn安装手册和使用总结

    《SVN安装手册和使用总结》 Subversion(简称svn)是一种版本控制系统,它是CVS的升级版,广泛应用于软件开发和其他需要版本控制的场景。本文档主要针对 SVN 的初学者,提供安装、配置和基本使用的指导。 1. **...

    SVN主干和分支操作

    - 切换到 Eclipse 的“SVN Repository Exploring”视图模式。 - 在“SVN Repository”窗口中,展开 SVN 树并右键点击项目,选择“New” -> “New remote folder”。 - 在弹出的对话框中,输入相应的文件夹名称...

    SVN管理项目视频教程

    ### SVN管理项目视频...总结来说,SVN适合于那些需要简单易用且集中式管理环境的团队,尤其是在网络条件良好且对分支需求不高的情况下。而对于需要高度灵活性、分布式协作以及频繁分支合并的项目,则更适合使用Git。

    Centos搭建SVN服务器

    ### Centos搭建SVN服务器知识点解析 #### 一、概述 在CentOS Linux环境下搭建Subversion (SVN) 服务器是一种常见的版本控制系统...对于开发团队来说,SVN是一个非常实用的工具,能够极大地提高工作效率和代码质量。

    svn原理剖析

    SVN服务器支持两种主要的运行模式:独立服务器模式和基于Apache服务器的模式。独立服务器模式提供了一种简单快速的部署方式,适用于小型团队或者内部项目。而基于Apache服务器的模式则提供了更高级别的安全性和灵活...

    svn-site插件

    通过集中式的管理模式,SVN确保团队成员在协作开发时能同步工作,避免了代码冲突,并提供了回滚到特定版本等功能。 ### SVN-Site插件功能 1. **站点生成**:`svn-site`插件能够自动化生成项目站点,包括文档、示例...

    SVN tutorial

    - SVN采用了集中式版本控制模式,这意味着所有的版本信息都存储在一个中央仓库中。 - 用户通过“检出”命令获取项目的最新版本到本地的工作副本中。 - 在工作副本中进行更改后,用户可以提交(commit)这些更改回...

    tortoisesvnsvn仓库

    总结来说,TortoiseSVN结合Subversion仓库,为软件开发团队提供了高效、可靠的版本控制解决方案。无论选择独立服务器模式还是借助Apache运行,都可以根据项目的具体需求找到适合的部署策略。通过熟练掌握TortoiseSVN...

    SVN用户使用详细指南

    可以在工作副本根目录下创建一个名为`.svnignore`的文件,列出需要忽略的文件或文件模式。 #### 4. SVN API ##### 4.1 使用API SVN提供了丰富的API供开发者使用,这些API可用于创建定制化的工具或集成到现有应用...

Global site tag (gtag.js) - Google Analytics