1,Revision control 思想
百度上说,是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。其实简单来说就是一种记录若干文件内容变化,对这个变化进行统一记录、管理和查阅的思想,是推动我们项目有序前进的重要法宝之一。
2,SCM(Software Configuration Management)
用来记录并控制软件产品数据的管理工具。
3,Why SCM
- 了解文件的修改过程、修改位置
- 使用ant、maven等自动化工具makefile时出现- 版本的make错误
- 程序的备份,使误删操作有了补救的可能
- 统一管理版本的编号与更替
- 项目的团队协作及项目各个模块代码的整合
4,SCM要解决的问题
- Multiple developers working on same code on the same time
- Multiple platform support
- Multiple version
- Multiple platform development environment
5、SCM主要功能
- Version Control
- Resource Control And Save
- Process Control
- Build & Release System
- Requirement Management
- Coordinative Work
6、CMM与SCM
CMM,Capability Maturity Model for Software。CMM有五个等级分别是:
Initial 初始化(最低级):
过程无序,进度、预算、功能和质量等方面不可预测。Repeatable 可重复:
达到该级的软件公司过程已制度化,有纪律,可重复Defined 定义
过程实现标准化Managed 管理
达到该级的软件公司已实现过程的定量化Optimized 优化 (*)
达到该级的软件公司过程可自发地不断改进,防止同类问题二次出现;
CMM对SCM提出了要求,如何让软件趋向*
7、Version Control Basic Concepts
Repository:数据仓库
Workspace :可根据仓库数据构建所需工作空间,相互分离(Isolated)
Delta
Delta即差别。SCM不应该每次保存各个Version的全部文件数据,而是应该记录各个Version之间的变化。
对于Delta有两种存储模型,forward delta和backward delta。- forward delta是基于旧版本的数据记录变化
backward delta是基于最新版本的数据记录变化。显然backward delta更符合开发习惯。
版本
Version:公开发布版本
强调功能性。通常在功能方面有一定的/重大改变、改进或增加,包括对一些重大bug的修复Release:公开发布版本
强调软件由调试/内测阶段转为正式发布/发行阶段。Build:对程序源代码做任何修改并重新编译后生成的版本
Edition:进行分类的软件版本
Baseline
多个源代码文件的一组版本
一个稳定状态
作为里程碑和和其他工作的基础
基线的最大作用在于对变更的控制trunk:主干|主线
开发时版本存放的目录,即在开发阶段的代码都提交到该目录上。Branch 分支
发布的版本存放的目录,即项目上线时发布的存放在本存放在该目录中。
分支同样有两种类型,File Based Branch(基于文件的分支)和Project Based Branch(基于项目的分支)。label(tag)
标签存放的目录。
在经过了一段时间的开发后,项目到达了一个里程碑阶段,你可能想记录这一阶段的代码的状态,要给代码打上标签。
8、SCM方法
9、分支策略
有一种策略:
(1)不稳定主干策略
(2) 稳定主干策略
(3) 敏捷发布策略
资料:
http://blog.csdn.net/mr_raptor/article/details/47808689h
其他的策略:
(1)短周期发布分支策略
(2)长周期分布分支策略
(1)按特性分支的持续集成策略
(2)二、模块化应用程序的持续集成
http://www.cnblogs.com/itech/archive/2011/08/01/2123354.html