转自(http://jasonchi.iteye.com/blog/573137)
文章分类:Java编程
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分支管理多版本知识点详解 #### 一、引言 在软件开发过程中,随着项目的迭代更新,如何高效地管理不同版本之间的代码成为了项目管理中的一个重要环节。Subversion(简称SVN)作为一款广泛使用的版本控制...
SVN(Subversion)是一种开放源代码的版本控制系统,相比RCS和CVS,它采用了分支管理系统。SVN的主要特点是支持分布式版本控制,能够对文件和目录进行版本控制。 svn目录结构: * 每个子系统单独一个目录 * 每个子...
"svn分支管理详解" svn分支管理是版本控制系统中的一种常用技术,用于管理项目的不同版本和变更。通过创建分支,可以让开发者在不影响主干的同时,进行新功能的开发和测试。在本文中,我们将详细介绍svn分支管理的...
在实际开发中,SVN的分支管理策略可以帮助团队有效地组织工作,如使用特性分支进行新功能开发,使用hotfix分支快速修复生产环境的bug,以及使用release分支准备产品的发布。了解并熟练掌握这些基本操作是SVN协同开发...
SVN(Subversion)是一种版本控制系统,用于管理代码和其他文件的变更历史。在团队协作中,SVN 提供了创建分支和合并分支的功能,以便开发者可以在不影响主线开发的情况下进行独立的工作。下面将详细介绍如何在 SVN ...
在版本控制系统中,Subversion(简称SVN...通过以上步骤和最佳实践,你可以有效地使用SVN创建和管理分支,提高团队的协作效率。记住,分支是SVN中一个强大的特性,正确使用它能够极大地提升软件开发的灵活性和可控性。
描述中提到“如果你准备做air或是android的自动集成”,暗示了我们将讨论如何使用Ant来实现Adobe AIR或Android应用的持续集成,并结合SVN管理不同开发分支。Adobe AIR允许开发者创建跨平台的桌面和移动应用程序,而...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件。它允许开发者在项目开发过程中创建分支和合并代码,以支持并行开发、...对于大型项目来说,有效地管理分支和合并是成功的关键。
通过上述步骤,我们可以有效地利用 SVN 进行项目的版本管理和分支操作。这种方式不仅能够提高团队协作的效率,还能保证代码的质量和项目的稳定性。此外,Eclipse 作为一款强大的集成开发环境,提供了丰富的插件支持...
SVN分支管理使用说明,以图片方式示意一个项目如何创建并管理SVN分支【管理员文件选择错了】
【SVN 分支合并基本操作】是软件开发中配置管理工具 Subversion (SVN) 的核心功能之一,它允许开发团队协同工作,各自在独立的分支上开发,然后将改动合并回主干,以保持代码的稳定性和一致性。以下是详细的操作步骤...
### SVN如何建立版本分支 #### 一、理解SVN中的版本控制结构 在Subversion (SVN) 中,为了有效地管理...通过遵循以上步骤和最佳实践,可以有效地利用SVN的分支功能来管理项目的版本控制,提高开发效率和代码质量。
SVN 分支的创建与合并是版本控制系统中非常重要的特性,可以帮助开发者更好地管理和维护代码。通过创建分支,可以将新的特性或 bug 修复工作与主干分离,避免对主干的干扰。当新的特性或 bug 修复工作足够稳定之后,...
SVN 版本管理规范 本文档旨在规范软件研发版本管理流程,降低软件开发过程的风险性。通过该规范的约束,降低软件开发过程的风险性。 版本管理流程图 集中式开发——基于 Trunk 的开发和分散式开发——基于 ...
SVN 分支与合并详解 SVN(Subversion)是一...SVN 的分支与合并功能可以帮助我们更好地管理软件开发过程,提高项目的效率和质量。但是,需要注意的是,在使用分支与合并时,需要遵守一定的规则和惯例,以免出现问题。
Web版的SVN管理工具则将这些功能集成到一个可以通过网页访问的应用中,为团队提供了更便捷的远程协作环境。 标题中的“svn 管理工具(web版)”指的是一个基于Web的SVN客户端,允许用户通过网络浏览器来操作SVN仓库...
### SVN分支管理模式解析 #### 一、概述 版本控制系统(Version Control System,VCS)是软件开发中的一个重要工具,能够帮助团队有效地管理源代码的变化历史。Subversion(SVN)作为一款广泛使用的集中式版本控制...
通过《SVN 分支与合并.doc》和《用SVN分支管理多版本.pdf》文档,您可以更深入地了解分支和标记的实战操作,包括更复杂的合并策略和团队协作的最佳实践。 总之,svn的分支和标记机制为软件开发提供了灵活的版本控制...