`
xiaoyuqi00
  • 浏览: 24861 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

SubVersion管理代码最佳实践

阅读更多

前提:代码仓库的管理均会采用svn来管理

 

代码目录结构的创建:

 

一般创建三个目录为:

-- trunk(主干)

-- tags(标签/标记)

--branches(分支)

有时在同级目录下还会创建一个wiki的目录,作为对项目的介绍等。我有时也叫tags目录为里程碑文件夹,会把里程碑版本放在此处。

 

tags和branches下一般为根据需要从trunk目录拷贝过来的。

 

tags的创建要求:

1、代码在一种平台下通过编译(必须);

2、代码编译出来的版本通过一定冒烟测试、单元测试;

3、在项目要求的平台都可以编译通过;

4、一般有一个测试包提交测试时,就需要在tags下建立对应代码标签。

 

tags下的代码一般不可以修改。

 

 

掌握创建分支的时机

这是一个容易引起争议的问题,事实上它取决于您的软件项目培养。没有规定通用的策略,仅在此描述三种常见的。

从不分支系统

(常用于还没有可运行代码的初始项目。)

  • 用户将他们的日常工作提交到 /trunk 中。
  • 用户开始提交一系列复杂更改时,/trunk 偶尔会“损坏”(无法进行编译或功能测试失败)。

优点:此策略非常容易遵守。新开发人员进入的门槛很低。不需要学习如何进行分支或合并。

缺点:无序的开发和代码可能随时变得不稳定。

旁注:在 Subversion 中,此类开发的风险要比在 CVS 中小得多。因为 Subversion 的提交是封闭单元式的,因而在其他人的提交过程中,签出或更新不会收到“部分”提交。

始终分支系统

(常用于需要进行大量管理和监督的项目。)

  • 每个用户对每项 编码任务的创建或操作都是在私有分支中进行的。
  • 编码完成后,原编码者、同级或经理将对所有私有分支的更改进行审查并将它们合并到 /trunk 中。

优点: 能保证 /trunk 始终都能极其 稳定。

缺点:编码者之间被人为隔离,会导致很多不必要的合并冲突。需要用户进行大量的额外合并工作。

按需分支系统

(这是 Subversion 项目所使用的系统。)

  • 用户将他们的日常工作提交到 /trunk 中。
  • 规则 #1:必须随时对 /trunk 进行编译并确保通过回归测试。将对违反此规则的提交者提出公开批评。
  • 规则 #2:单个提交(更改集)必须小于同级所能审查的最大限度。
  • 规则 #3:如果规则 #1 与 #2 产生冲突(如一系列小提交必然会扰乱 trunk),则用户应创建分支,然后将一系列更小的更改集提交到分支中。这样即可允许进行同级审查,又会不破坏 /trunk的稳定性。

优点: 可保证 /trunk 始终都能保持稳定。分支和合并的问题将较少。

缺点:将添加一些负担到用户的日常工作中:每次进行提交之前,都必须进行编译和测试。

 

里程碑的创建

 

集成人员将开发人员提交的功能集成到主干上,编译通过后提交到主干上集成了一定的功能后,创建一个里程碑版本,一般建议按周创建里程碑版本。并在tags下创建响应的代码快照,并将安装包传至指定位置。

 

开发人员一般于最新的里程碑版本创建分支,并在分支上工作,并在自己的分支上提交,在提交到svn之前需要编译通过。开发人员需要根据自己开发情况来同步到主干的里程碑代码。如果需要继承主干上,需要同步到新近的里程碑。

 

测试人员

 

测试人员对开发人员的代码进行测试,达到一定测试标准后,测试通过,然后提交由集成人员来集成。按需分支系统适应方式代码较少,或者参与开发人员较少

 

开发人员可以直接主干上提交。开发负责人来编译版本给测试。

 

开发人员把所有的新特性提交到主干,每日的修改提交 /trunk,新特性, bug修正和其他。新近的开发人员不能提交代码,交由有经验的开发人员验证后才能提交到主干上。

 

当开发小组认为软件已经做好基本发布的准备(比如,版本1.0)然后 /trunk 会拷贝到 /branches/1.0。这个主干被拷贝到“发布”分支。然后再发布分支上继续修改bug。

 

如果bug修正经测试达到一定的要求认为可以完成时,可以拷贝到/tags/1.0.0,这个标签被建立并放权给相关人员

 

向svn库提交代码要求针对每次提交到主干上的代码均需要编译通过,代码每次提交到svn上均需要添加注释。

 

这是本人查看文档和自己实践后的总结,有错误的地方或更好的方法,还希望大家提出。

 

以前只是看别人写的文章,看懂后只是实践下就收藏起来,结果后来在用的时候发现很多好的文章都找不到了,所以以后会经常做总结和学习记录。

 

分享到:
评论

相关推荐

    使用Subversion进行版本控制(针对 Subversion 1.4)

    合并的最佳实践 手工跟踪合并 预览合并 合并冲突 关注还是忽视祖先 合并和移动 常见用例 合并分支到另一分支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 使用分支 标签 建立简单标签 建立复杂标签 ...

    PHP基于Web的subversion用户管理系统(源代码+lw).zip

    此外,我们还采用了安全性的最佳实践,如输入验证、安全过滤和加密存储等,以保护用户数据的安全性。 我们的项目源码具有良好的可读性和可维护性,采用了面向对象的设计原则和模式。我们使用了MVC(Model-View-...

    SVN分支/合并原理及最佳实践

    使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支...下文的实践主要是参考了TortoiseSVN的帮助文档和Subversion的在线文档,Subversion的在线文档:http://svnbook.red-b

    在Eclipse中使用SVN与CVS代码管理工具管理项目

    二、 SVN(Subversion) - CVS(Concurrent Version System)的替代和升级版本先说说CVS,CVS是开源代码的配置管理工具,其源代码和安装文件都可以免费下载。记得在学校读研的时候,学校实验室的代码全部都用CVS管理,为...

    matlab集成c代码-BASIS:CMakeBASIS使得创建可协同工作的可共享软件和库变得容易。这是通过组合和记录一些最佳实践和实用程序来

    这是通过组合和记录一些最佳实践和实用程序来实现的。 更重要的是,BASIS提供了一套完全集成的功能套件,以使整个过程变得无缝! | | | | 特征 项目创建 使用mad-libs样式文本替换进行快速项目设置 可定制的项目模板...

    Eclipse安装SVN-CC-GIT-VSS-CVS详细使用说明书

    通过客户化定制,无论是十人以下的开发小组还是几千人的分布式研发团队都可以从中得到配置管理和变更管理的最佳实践经验和技术。而集成 CQ 的 CC 统一变更管理 UCM(Unified Change Management) 更是目前第三代配置...

    SVN使用手册中文版快速入门

    合并的最佳实践 手工追踪合并 预览合并 合并冲突 关注还是忽视祖先 常见用例 合并一条分支到另一支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 转换工作拷贝 标签 建立最简单的标签 建立复杂的标签 ...

    SVN使用手册中文版.chm

    合并的最佳实践 手工追踪合并 预览合并 合并冲突 关注还是忽视祖先 常见用例 合并一条分支到另一支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 转换工作拷贝 标签 建立最简单的标签 建立复杂的标签 ...

    MSDN杂志 2008年新产品特刊

    <br>超酷代码: Silverlight 技巧、窍门和最佳实践 Jeff Prosise 为 Silverlight 开发提供了非常有帮助的技巧,虽然它们已经被广为应用,但仍需要更多的文档和最佳实践,以便开发人员能最大限度地利用这些令人...

    matlab集成c代码-legacy:适用于3.2和更早版本的旧版CMakeBASIS项目。对于较新的版本,请转到

    这是通过组合和记录一些最佳实践和实用程序来实现的。 更重要的是,BASIS提供了一套完全集成的功能套件,以使整个过程变得无缝! | | | | 特征 项目创建 使用mad-libs样式文本替换进行快速项目设置 可定制的项目模板...

    2小时玩转Git:日常使用到根本理解

    为什么人人都要学Git?...1)Git最佳实践 2)版本管理 3)分支管理 4)标签管理 5)解决冲突 6)Git信息存储原理 7)深入理解Git三大分区 ---------------------------------------------------------------

    Apache Maven项目构建工具-其他

    Maven的主要功能:1、遵循最佳实践的简单项目设置-数秒内即可启动新项目或模块。2、所有项目的用法一致-意味着新开发人员无需花更多时间来参与项目。3、高级依赖性管理,包括自动更新,依赖性关闭(也称为传递依赖性...

    开源软件之道.part2of2

    14.5 开源开发的最佳实践 235 14.6 企业参与开源 238 14.6.1 需求 238 14.6.2 风险 238 14.6.3 企业参与开源的策略 239 第15章 开创事业 242 15.1 项目启动与计划 242 15.2 选择正确的许可证 247 15.3 基础设施构建 ...

Global site tag (gtag.js) - Google Analytics