在上一篇文章中,我介绍SVN是一个很好的传输工具,这个功能是基于SVN配置管理的强大功能实现的。SVN能做到的不仅仅是传输,在整个项目周期中,SVN可以有效的对各种文档、源代码进行组织和配置。

下面我说明一下SVN在系统环境(开发环境DEV-测试环境QAS-培训环境TRN-生产环境PRD)上的使用。

目录结构:

svn的目录是按英文字母排序,这个跟我们习惯上的DEV-QAS-TRN-PRD项目顺序略有不同。

SVN的目录有一些约定俗成的结构,一般的,trunk存放当前活跃的开发主干;branches存放开发分支;tags存放里程碑(我这里叫baselines 基线),另外加上docs存放各种文档。

在中铁集团ERP开发中,我预想的大致流程是这样的:首先大家在trunk中进行开发,达到测试条件后(例如完成一个task)将trunk合并到QAS的trunk里,由测试人员进行测试,一直反复迭代一直到达某个里程碑/基线(如财务模块完成)。冻结,将trunk复制到baselines下。

一直等到整体完工,合并DEV的trunk到QAS的trunk里做集成测试。测试通过后,再合并到TRN的trunk。如果有后续开发,那么可将trunk复制到baselines,然后再从baselines合并到TRN的trunk。

PRD的合并和发布基本同TRN。

SVN服务器放外网比较合适,这样培训人员去培训时,只需要连上SVN服务器,将TRN目录下的trunk更新下来即可。

开发环境 DEV

开发环境中docs存放设计、需求、功能说明书等文档。

trunk存放源代码,是所有人的开发主目录。提交到trunk中的代码要求没有bug,至少也应该是在本机能够编译通过。可以适当利用加锁机制,减少冲突。另外开发人员应该每天下班前将自己代码提交。

必须先更新再提交,这是为了防止修改失效。例如A、B两开发人员均有a.txt文件,A删除了a.txt,提交到版本库,这时版本库中已经不存在a.txt;B提交的时候,如果不先更新就提交,那么B的a.txt就会提交到版本库里,导致A的删除无效,如果B先更新,B本机的a.txt就会删除,再提交就不会出现这个问题。

branches存放项目分支。本项目是从头开发一个ERP,这个目录并无必要。如果我们是在一套ERP的基础上同时进行多个项目,例如 思念食品ERP,河南宇通ERP,就可以在trunk放基础ERP代码,在branches分别存放每个项目的代码。在branches中的修改,如果比较好,可合并到trunk中,同样,trunk的修改也可合并到branches里。

baselines存放里程碑,或者叫项目快照,这个目录也可以称为tags、release等等。它存放的是达到里程碑的不可修改的静态版本。对于已经成熟的产品,比如windows,可以存放windows 95,windows98,windows2000等等。我们开发中的产品,这里可以存放各里程碑时候的源代码,例如原型、财务模块完成等等。它跟branches的区别就是它是不可修改的。

baselines的主要用处是针对项目管理。基线就是需要客户确认的里程碑。它一旦建立,就意味着基线纳入的需求已经 经用户确认无误,以后一旦发生变化,就要走需求变更流程。

baselines还有一些其他用处。例如要基于一个里程碑对客户或者Boss做演示,trunk每天都在变化,不能因为要做演示就将trunk停止更新,这时就可以将该里程碑复制到baselines。

测试环境 QAS

docs存放测试用例等各类测试文档。

当需要进行测试时,由配置管理员将当前代码从DEV trunk复制到QAS trunk,然后由测试人员进行测试。不同的测试一般对应着不同的设计,以后会详细说这个问题。

简单的测试,如交叉测试代码走查,下班之前半个小时,开发人员互相走一下对方的代码,在DEV的trunk甚至在开发人员的计算机上就可以进行。

单元测试、集成测试、系统测试以及用户接受测试,就可以放到QAS trunk中进行。

培训环境 TRN

docs存放培训ppt等。

trunk存放程序的代码。这里的代码应该是经QAS测试无误后从DEV trunk复制过来的。

生产环境 PRD

docs存放用户使用说明书等。

PRD trunk存放的代码和TRN  trunk代码是一致的。两者不同的地方在于数据不同。TRN的数据是测试数据,接近于实际数据,PRD的数据一定要是实际生产数据。

PRD环境的构建,意味着客户已经开始上线实施了,此时PRD中trunk的改变要谨慎,复制授权要缩小。

转载于:https://www.cnblogs.com/mayee/archive/2010/09/14/erp_useSVN.html

ERP笔记2-善用SVN对系统环境进行配置和组织相关推荐

  1. (SVN笔记)SVN服务端+SVN客户端Tortoise——安装配置

    目录 1.前言 2.官网下载SVN服务端1.14.1 3.安装SVN服务端Server 4.官网下载SVN客户端Tortoise4.3.4 5.安装Tortoise 6.验证Tortoise安装 7. ...

  2. (SVN笔记)https内网IP端口配置SVN服务端+内网SVN客户端联合使用

    目录 1.前言 2.SVN服务端设置 3.开始使用SVN (1)新建版本库 (2)迁入项目到SVN服务端 (3)检索项目/拉取项目check out (4)提交代码commit (5)更新代码upda ...

  3. Halcon学习笔记(一):Qt+Halcon联合开发配置

    Halcon学习笔记(1):Qt+Halcon联合开发配置 首先是新建一个QT项目qtest_hc 方法一: 1)QT项目文件 qtest_hc 添加库: #1.包含目录添加 INCLUDEPATH ...

  4. SVN服务端安装配置

    SVN全称subvension,它是近年来崛起的版本管理工具,目前绝大多数软件公司都使用了它.SVN也是软件配置管理,所谓的软件配置管理实际就是对软件源代码进行控制和管理,合作开发.异地远程开发.版本 ...

  5. linux 安装svn服务端并配置

    我的系统环境是centOS7.这里使用yum安装方式.优点:简单,一键安装,不用手动配置环境变量等.缺点:安装位置为yum默认. 一.yum安装subversion     1. 安装subversi ...

  6. svn服务安装和配置 以及搭配Eclips插件使用(总结)

    1.获取 Subversion 服务器程序 2.获取 TortoiseSVN 客户端程序 3.建立版本库(Repository) 4.首先建立 e:\svn 空文件夹作为所有版本库的根目录.然后,进入 ...

  7. Windows:系统环境变量配置提示系统环境变量太大的问题三种解决方案亲测可用

    系统环境变量配置 解决方案1: 解决方案2: 解决方案3: 解决方案1: 1.在系统环境变量中新建路径"path1" 2.在系统环境原来的path下新建路径包含上面的路径" ...

  8. Servlet和HTTP请求协议-学习笔记02【Servlet_体系结构与urlpartten配置、HTTP请求协议】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  9. FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程

    FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程 很多做过单片机的朋友都知 道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部.即使MCU断电了再重新上电,程序 ...

最新文章

  1. 云原生应用程序的架构应该怎么设计?
  2. Python自然语言处理学习笔记(7):1.5 自动理解自然语言
  3. 解决flask中文乱码的问题
  4. Opengl-模型(告别箱子加载模型)
  5. 干货!表达式树解析框架(3)
  6. 【C#每日一贴】ArrayList 转换成byte数组
  7. 电脑高手常用的5个按钮
  8. python反序列化总结_单例模式的反序列化总结
  9. 从 Windows 换到 Mac,真没有想象中的那么难
  10. java antd实现登录,AntDesign(React)学习-4 登录页面提交数据简单实现
  11. 【华为云技术分享】敏捷DevOps知识卡大全(内附下载资料)
  12. linux samba 多个目录,linux7 Samba服务配置,多个部门相应管理自己的项目目录,其他有访问权限...
  13. android studio中tabhost自定义,Android Studio——TabWiget组件实现(带图标签)
  14. 战舰世界显示无法连接服务器失败,王美雪:战舰世界无法连接服务器解决方法 无法登陆怎么办...
  15. html5 中秋博饼游戏,微信通用功能模块 中秋博饼V4.1.5 开源版
  16. 目前股指期货保证金(目前股指期货保证金是多少)
  17. 论文解读:跨域推荐模型MiNet
  18. Docker安装及镜像配置(常用命令介绍)
  19. Vue使用photo-sphere-viewer360°×180°全景插件模拟VR看房、房间切换和自定义标注
  20. Java工程师培训课(十一、新的开始)

热门文章

  1. gets函数在使用上要注意什么问题
  2. python六十一: __module__属性
  3. 谈谈Promise的前世今生
  4. gluPerspective和gluLookAt的关系
  5. Android第二十期 - 微信的主体构架
  6. 为什么编码不同会出现乱码?
  7. Linux wget 命令详解
  8. 不仅仅是商务旗舰,金立M2017的拍照实力同样给力
  9. Android studio如何使用SVN进行版本控制?
  10. zookeeper 运维管理