目录
- 1、为什么需要使用SCM
- 2、什么是SCM
- 3、作用
- 变更控制:
- 版本控制的内容
- 版本控制策略
- 4、版本控制工具
1、为什么需要使用SCM
1. 更改源文件,但不知道哪个是最新的;
2. 我不了解文件的修改过程,尤其是最后修改了哪几行以及为什么修改;
1. Make时,经常用错文件的版本;
多人修改一个文件,有些人的结果被冲掉了;
程序误删了,只能重写;
花了一周时间,终于查出了一个错误,
但发现有个同事上周前已经修改了同样的错误,
但我却不知道,造成浪费;2. 整个项目由若干部分组成,项目初期各人做各人的一部分,
后期合并联调,但是周期很长,达数周甚至数月,开销非常大;
调试过程中,经常出现“扯皮”,搞不清楚哪的问题
版本太多,有的太旧,查看不方便
估计项目成员的工作进度和工作成果比较困难3. 交付给用户的产品“缺斤少两”,用户在安装时才发现问题
用户使用时发现的问题不能够及时得到解决
不能过确切了解项目的进度,总是得到“差不多”“大概”之类的模糊回答
公司的运作过程无法控制,“不按我说的做”
2、什么是SCM
SCM是一种标识、组织和控制修改的技术。
它应用于整个软件生存期。
在软件建立时会经常产生变更,
而变更加剧了项目中软件人员之间的混乱。
之所以产生混乱,是因为在进行变更前没有仔细分析,
或没有进行变更控制。因为变更在任何时刻都可能发生,
因此软件配置管理活动的目标就是为了标识变更,控制变更,
确保变更正确地实现,向其他有关的人报告变更。
软件配置管理是一组追踪和控制活动,
它们开始于软件开发项目开始之时,结束于软件被淘汰之时。
从某种角度讲,SCM是一种标识、组织和控制修改的技术,
目的是使错误降为最小并最有效地提高生产效率。
SCM是一门用来记录并控制软件产品数据的管理学科。
3、作用
产品的经历
软件产品数据:需求文档设计文档源码数据库脚本测试用例(测试脚本)测试报告培训文档(教育文档)上线记录
SCM的主要任务有两个:
第一,变更控制;第二,版本控制
变更控制:
唯一不变的就是变化本身,接受变更是不争的实事。
软件产品易于掌握的特性和不可见性,
往往导致它的构建人员面临着永恒的变更。
因此必须制定相应的变更管理计划,防止变更失控
流程:
1.识别变更。
2.评价变更对项目整体的影响(变更的可行性)。
3.寻找处理变更的备选方案。
4.征求项目干系人的意见。
5.批准或否决变更。
6.追踪变更的实施情况。
- 版本控制:
版本控制系统是保存文件多个版本的一种机制。
版本控制软件可以帮助你得到以下益处:
别人正在修该某文件的同时,你可以同时修改这个文件。
你能方便地将你机器上的全部项目文件更新到当前版本。
你可以回溯到任何文件的任意版本。
你可以获得一份文件更改的历史记录。
你无需本地备份,因为版本控制提供了安全保障
版本管理:记录每个版本
方式一:将最原始的文件存下来,后面都是存变化的部分
方式二:将最新的文件存下来,前面的都是存变化的部分
取文件的时候,一般都是取最新的文件 一般采用方式2
版本控制的内容
版本控制的目标是能够随时获取软件在整个生命周期中任意时间点的文件状态。因此,任何与项目相关的文件都应该进行版本控制。以下内容应该进行版本控制:
管理相关文档(包括项目章程、合同、项目范围说明书、各类计划、各类核对表等项目管理过程中涉及的文档)
开发相关文档(包括编码规范、需求分析、概要设计、详细设计、数据字典、API帮助手册、测试报告等涉及软件构建的文档)
- 系统原型
- 源代码
- 实例代码
- 测试脚本
- 数据库脚本
- 构建和部署脚本
- 配置文件
版本控制策略
1. 先下手为强
2. 保证频繁地提交可靠代码
3. 对提交权限进行限制(读写权限)
4. 确保团队中所有人在下班前提交代码,并在开发中都能及时获取最新版本
5. 使用意义明确的提交注释
6. 及时同步并定义明确的基线
4、版本控制工具
- git
码云
github,最大同性交友网站 - svn
SVN是一款非常知名的中央版本控制系统。
(与中央版本控制系统对应的是分布式版本控制系统,如git。
分布式版本控制系统支持大型开源团队的需要,
一般项目使用中央版本控制系统足以。)
版本控制系统用于维护应用程序每次修改的完整历史,
包括源代码、文档、数据、脚本等等。它的另一个重要用途,
让团队一起工作在应用程序的不同部分,同时维护系统记录.