版本控制Revision control

时间:2024-04-09 21:46:06

1,Revision control 思想
百度上说,是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。其实简单来说就是一种记录若干文件内容变化,对这个变化进行统一记录、管理和查阅的思想,是推动我们项目有序前进的重要法宝之一。
版本控制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
版本控制Revision control

CMM,Capability Maturity Model for Software。CMM有五个等级分别是:

  • Initial 初始化(最低级):
    过程无序,进度、预算、功能和质量等方面不可预测。

  • Repeatable 可重复:
    达到该级的软件公司过程已制度化,有纪律,可重复

  • Defined 定义
    过程实现标准化

  • Managed 管理
    达到该级的软件公司已实现过程的定量化

  • Optimized 优化 (*)
    达到该级的软件公司过程可自发地不断改进,防止同类问题二次出现;

CMM对SCM提出了要求,如何让软件趋向*

7、Version Control Basic Concepts
版本控制Revision control

  • 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方法
版本控制Revision control

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