Software Development - 版本管理基础知识

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 

什么是版本管理

版本管理是指为满足不同需求,对同一产品或系统进行局部的改进和改型所产生的产品或系统系列的变更情况进行记录、跟踪、维护和控制的过程。其主要功能有:

  1. 集中管理档案,并带有安全授权机制:档案集中存放在服务器上,经系统管理员授权给各个用户。用户通过Check In和Check Out的方式访问服务器上的文件,未经授权的用户则无法访问服务器上的文件。
  2. 软件版本升级管理:每次Check In时,在服务器上都会生成新的版本;任何版本都可以随时Check Out进行编辑。
  3. 加锁功能:在文件更新时保护文件,避免不同的用户更改同一文件时发生冲突。
  4. 提供不同版本源程序的比较。

版本管理模型

版本管理的主要模型有线性版本管理模型、树型版本管理模型和有向无环图版本管理模型。

1、线性版本管理模型

这是按照版本出现的先后次序排列的一种简单模型。一个对象的版本聚集在一起组成一个版本集,版本集中的元素之间满足 “successor-of”的有序关系。版本集中的元素是全序关系,新元素只能朝一个方向上增加,除最新版本外,其余版本均是只读版本。

2、树型版本管理模型

树型版本管理模型中各版本的出现呈现树状结构。同样,一个对象的版本聚集在一起组成一个版本集,版本集中的元素之间满足“successor-of”的有序关系。但版本集中的元素是半序关系,即一个版本可以有多个后继版本,因此,可以有多个最新版本。同样,除最新版本外,其余版本均是只读版本。这种模型可以反映设计过程中以某一中间版本为基础,选择多种设计方案而形成多个设计结果的情况。

3、有向无环图版本管理模型

有向无环图版本管理模型中各版本的出现呈现无循环图的结构。同样,一个对象的版本聚集在一起组成一个版本集,版本集中的元素之间满足“successor-of”的有序关系。版本集中的元素是半序关系,即一个版本可以有多个后继版本,因此,可以有多个最新版本。同时,一个版本可以有多个前驱版本。同样,除最新版本外,其余版本均是只读版本。这种模型可以表达由多个设计零部件合成一个完整对象的情况,即由多个设计版本融合出一个新版本的情况。此模型是较为完善的模型,线性模型及树型模型是它的特例。

版本管理方法

版本管理的常用方法有:向前版本管理法、有限记录版本管理法、向后版本管理法、关键版本管理法和设计版本的重新组织等方法。

1、向前版本管理法

只完整的存储原始版本数据,后继的版本仅存储与前驱版本的差。这种方法的优点是数据冗余少,生成新版本简单;缺点是对原始版本以外的所有版本的访问都必须依据一定的算法临时生成相应的版本,比较繁琐。

2、向后版本管理法

与向前版本管理法正好相反,该方法只完整存储最新版本数据,其他版本只存储其与后继版本之间的差。因此同样数据冗余少,而且一般情况下对新版本的访问频度较高,效率比向前版本管理法高。缺点是每次生成的新版本都是完整的版本,比较费时和复杂,访问新版本以外版本时也必须依据一定的算法临时生成相应的版本。

3、有限记录版本法

为减少数据冗余,实际应用中不大可能保存每个对象的所有版本。有限记录版本法提供为每个对象保留有限数量的不同版本的方法进行版本管理,在新版本生成时,系统自动废除一些老版本,这样可以重用其占有的空间,从而不会扩大数据库所占用的总空间。

4、关键版本法

在工程设计过程中产生的诸多版本中,其重要性是有很大差别的。因此,根据各数据库在整个产品设计过程中的重要性,可以将其分为关键版本和非关键版本。在生成数据库的新版本之时,可以废除某个非关键版本,以重用其所占有的存储空间,但不允许系统自动废除某一关键版本。

5、设计版本的重新组织

重新组织的方法是利用已有的多个数据库版本融合出一个新的数据库版本,充分利用数据库中已经存储的大量历史数据来生成数据库的新版本是有可能的和富于价值的。

6、版本管理的新方法

用于减少数据冗余和实现版本间的引用和比较。版本集是通过修改一个已存在的实体而产生的版本,同一实体的不同版本实质上是相似的。而选择则是通过创建一个新的实体以表示相同功能的实体而产生的,两个选择之间可能没有任何共同之处。从中可以看出版本集和选择虽然都与实体相关联,但两者间存在很大的差别,应该采用不同的方式实现。若版本之间只是部分的修改,且修改多集中在一些记录上,可以采用“记录级版本”的方法;若两个选择之间的差别较大,应采用“文件级版本”的方法。

在记录级版本法中,用一个唯一的记录标识来标识每条物理记录,并作为该记录在数据库中的物理地址。一个版本文件由三个内部文件支持:历史索引、当前版本文件、旧版本文件。三个文件组织成一个树型结构,其中历史索引是根,其孩子是记录级版本顺序号,不同的版本顺序号通过键与当前版本文件和旧版本文件连接,表示版本的变迁情况。

在文件级版本法中,每个选择用一个文件的命名集合来表示。对集合中每个文件,在文件名后用一个后缀序号表示。如:cmp.1-表示原始版本,cmp.2,…。对于每个文件下的扩充,可以采用子序列1.1、1.2、1.3的形式加以扩充。

7、C/S体系结构的版本管理

工程数据库技术是Client/Server结构最典型的应用领域之一。在C/S结构的工程数据库应用系统中,数据库应用程序运行在客户端(Client),负责用户界面和I/O处理;数据库管理系统运行在服务器端(Server),负责数据处理和存储。在这种体系结构中,版本的管理有自身的特点。

C/S数据库体系中一般采用版本的不同类型实现版本管理,即多种语义版本模式,由public数据库、若干个project数据库和若干个private数据库组成。这种版本模式可以用三种不同的语义类型加以区分:①发布版本(released version):发布版本驻留在 public数据库中,具有删除和修改保护。其他对象对发布版本的使用是安全的。②工作版本(working version):与发布版本一样,工作版本也是不能修改的。但它可由创建者来修改,可以驻留在private数据库中,也可以驻留在project数据库中。工作版本 通过检验进入public数据库后,就成为发布版本。③过渡版本(transient version):过渡版本驻留在private数据库中,禁止该private数据库外的其他对象访问。一个过渡版本可以从工作版本或发布版本中派生出来,也可以通过自动升级成为工作版本。

8、面向对象版本管理

在面向对象版本管理中通过引入“类版本”,将版本分为类版本和实例版本两种类型,其中类版本是模式版本化生成的,而实例是模式的具体实现,不同的实现形成不同的实例版本。版本的演化过程通过树型结构体现,被修改的版本是父版本,修改后得到的版本是其子版本。版本在不同的数据库中具有不同的状态,主要包括:①临时版本:在私有库中,没有子版本的版本称为临时版本,可以进行修改和删除;②有效版本:在临时版本上导出子版本后,临时版本提升为有效版本,此时可以删除但不可修改;③提交版本:设计人员完成设计后,将私有库中最完善的版本提交到公有库中,公有库中的版本称为提交版本,此时不可删除也不可修改。

猜你喜欢

转载自blog.csdn.net/chimomo/article/details/107891302