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