一、什么是版本控制。
(1)定义:
版本控制主要用于存储,追踪目标(文件夹)和文件的修改历史,确保不同的人所编辑的同一文档都得到更新,版本控制透过文档控制记录程序各个模块的改动,并为每次改动编写上序号,大大提高了开发效率。
(2)相关系统:
1.软件系统的版本控制是指可以自行运行的各子系统的版本控制
2.软件系统的版本号有测评人员确定,由测评人员进行版本控制工作。
3.软件系统的版本号由三部分构成:主版本号+次版本号+修改号。主版本号1位 ,当系统在结构和功能上有重大突破改进后才会发生变化;次版本号两位,修改号8位,采用提交时的日期,当系统进行任何修改后,包括数据结构发生变化,修改号都要随之改变。例如:Ver2.21.20171001
4.各子系统的版本号独立
5.各软件系统应该显示详细版本号的功能,例如help菜单下的about功能。系统提交存档时测评服务要进行版本号检查。
6.新系统卡法完成,或已存档的系统进行修改,修改完成后,进行提交存档时,由测评小组系统分析工程师确定的版本号,或更改版本号。
7.软件系统产生新的版本后,老版本是否继续保存问题解决如下:
a.老版本的系统如果还有客户在使用,在客户升级以前,必须继续保持
b.老版本的系统已经没有客户使用了,并且新版本的系统已经把老系统的文档完整的升级,这样可以删除或覆盖老版本系统资源。
c.对于要删除或覆盖的老版本软件,可以统一备份。
二,各种版本控制
(1)本地版本控制
许多人习惯用复制整个项目目录的方式保存不同的版本。
优点:简单粗暴。
缺点:易混淆,易丢失。
为了解决这个问题,于是开发了许多种本地版本控制系统(大多采用某种简单的数据库记录文件的历次更新差异)如rcs...工作原理基本上就是保存并管理文件补丁(patch),文件补丁是一种特定格式的文本文件,记录对应文件修改前后的内容变化。所以根据每次修订的补丁,计算出各个版本的文件内容。
(2)集中化版本控制
为了提高工作效率,方便不同系统上的开发者系统工作,集中化版本控制出现了。如CVS,Subversion以及Perforce等,都有一个单一的集中管理的服务器,保存所有文件的修订版本。标准做法就是:协同工作的人都通过客户端连接到这台服务器,取出新的文件或者提交更新。如图2.1
优点:相对本地CVS来说,每个人都可以看到项目其他人正在做什么(透明),管理员掌握开发者的权限,
并且管理一个CVCS要远比在多个客户端维护本地数据库要轻松得多。
缺点:太过于依赖中央服务器,如果出现中央服务器的单点故障,那么谁都无法协同工作。如果没做备份或备份不及时的化,还可能出现数据丢失的风险。最坏可能丢失整个项目的所有历史记录(如中央服务器硬盘坏了)。客户端取出来的可能是快照数据,不能保证所有人的数据都提取出来。
(3)分布式版本控制
出于以上两种可能出现问题,分布式诞生了。如Git,Mercurial,Bazzar等,客户端不只是提取最新版本的文件快照,而是把原始的代码仓库完整的镜像下来。这样,任何一处协同工作的服务器发生故障,都可以用任何一个镜像出来的本地仓库恢复,因为每一次的提取都是对代码仓库的完整备份,使得风险大大降低。
更好的是,许多这类系统都可以和若干不同的远程代码仓库进行交互。可以让同一个项目中的开发人员更好的建立协作,根据需要设定不同的协作流程,大大提高了开发效率和管理的方便。
三:版本控制术语
存储库:具有受版本控制的所有文件的完整修订历史的共享数据库。
签入文件或目录:将工作目录作为新版本复制回存储库。
签出文件或目录:从存储库中将文件的最新版本复制到工作空间,签出目录时,将牵出该目录下的所有文件和子目录。
提交文件或目录:与签入文件或目录相同,用户提交更改,对各自工作文件副本做了修改,并将更改的文件提交到存储库。
冲突:当多位开发人员对同一文件放工作副本进行更改,并将修改文件提交到存储库时,他们的工作可能发生冲突。CVS或Subversion或Git会检测冲突并要求某个人先解决该冲突,然后再提交他们的更改。
合并:将对相同文件的不同工作副本进行的多个更改合并到资源存储库中,合并是一种管理冲突的策略,允许多名开发人员同时工作(不必对文件上锁),然后将他们的工作并入一个组合版本中。当对同一文件的不同行进行两组更改时,合并这两组更改很容易,而合并操作也可正常进行。但对文件的同一行或几行进行更改时,将发生冲突,这就要求有人手动编辑该文件进行统一,然后才能将这些更改成功提交到资源存储库。
解决:当两名开发人员试图提交发生冲突的更改,而造成文件内的冲突时,必须通过手动编辑该文件进行处理。必须有人逐行检查该文件,以接受一组更改并删除另一组更改,除非冲突解决,否则存在冲突的文件无法成功提交到资源库中。
修订版本:对各个文件进行具体更新的编号草案,每次编辑文件并将文件提交到存储库时,该文件的修订版本号将会增加。
版本:用于标识文件集的编号方案,可在某个时间点标记并命名这些文件集。
工作空间:要在本地硬盘或Unix用户账户上编辑的文件副本,在工作空间中编辑文件时,这些文件将不再与存储库同步,这就是进度,然后需要将更改返回存储库,方便他人可以看到这些修改。
get√ 感谢互动百科。。