博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
版本控制笔记
阅读量:6675 次
发布时间:2019-06-25

本文共 2228 字,大约阅读时间需要 7 分钟。

hot3.png

一、什么是版本控制。

(1)定义:

版本控制主要用于存储,追踪目标(文件夹)和文件的修改历史,确保不同的人所编辑的同一文档都得到更新,版本控制透过文档控制记录程序各个模块的改动,并为每次改动编写上序号,大大提高了开发效率。

(2)相关系统:

1.软件系统的版本控制是指可以自行运行的各子系统的版本控制

2.软件系统的版本号有测评人员确定,由测评人员进行版本控制工作。

3.软件系统的版本号由三部分构成:主版本号+次版本号+修改号。主版本号1位 ,当系统在结构和功能上有重大突破改进后才会发生变化;次版本号两位,修改号8位,采用提交时的日期,当系统进行任何修改后,包括数据结构发生变化,修改号都要随之改变。例如:Ver2.21.20171001

4.各子系统的版本号独立

5.各软件系统应该显示详细版本号的功能,例如help菜单下的about功能。系统提交存档时测评服务要进行版本号检查。

6.新系统卡法完成,或已存档的系统进行修改,修改完成后,进行提交存档时,由测评小组系统分析工程师确定的版本号,或更改版本号。

7.软件系统产生新的版本后,老版本是否继续保存问题解决如下:

a.老版本的系统如果还有客户在使用,在客户升级以前,必须继续保持

b.老版本的系统已经没有客户使用了,并且新版本的系统已经把老系统的文档完整的升级,这样可以删除或覆盖老版本系统资源。

c.对于要删除或覆盖的老版本软件,可以统一备份。

二,各种版本控制

(1)本地版本控制

许多人习惯用复制整个项目目录的方式保存不同的版本。

优点:简单粗暴。

缺点:易混淆,易丢失。

为了解决这个问题,于是开发了许多种本地版本控制系统(大多采用某种简单的数据库记录文件的历次更新差异)如rcs...工作原理基本上就是保存并管理文件补丁(patch),文件补丁是一种特定格式的文本文件,记录对应文件修改前后的内容变化。所以根据每次修订的补丁,计算出各个版本的文件内容。

(2)集中化版本控制

172643_4kYx_3701483.jpg

为了提高工作效率,方便不同系统上的开发者系统工作,集中化版本控制出现了。如CVS,Subversion以及Perforce等,都有一个单一的集中管理的服务器,保存所有文件的修订版本。标准做法就是:协同工作的人都通过客户端连接到这台服务器,取出新的文件或者提交更新。如图2.1

优点:相对本地CVS来说,每个人都可以看到项目其他人正在做什么(透明),管理员掌握开发者的权限,

并且管理一个CVCS要远比在多个客户端维护本地数据库要轻松得多。

缺点:太过于依赖中央服务器,如果出现中央服务器的单点故障,那么谁都无法协同工作。如果没做备份或备份不及时的化,还可能出现数据丢失的风险。最坏可能丢失整个项目的所有历史记录(如中央服务器硬盘坏了)。客户端取出来的可能是快照数据,不能保证所有人的数据都提取出来。

(3)分布式版本控制

            173250_Nf5u_3701483.jpg

出于以上两种可能出现问题,分布式诞生了。如Git,Mercurial,Bazzar等,客户端不只是提取最新版本的文件快照,而是把原始的代码仓库完整的镜像下来。这样,任何一处协同工作的服务器发生故障,都可以用任何一个镜像出来的本地仓库恢复,因为每一次的提取都是对代码仓库的完整备份,使得风险大大降低。

更好的是,许多这类系统都可以和若干不同的远程代码仓库进行交互。可以让同一个项目中的开发人员更好的建立协作,根据需要设定不同的协作流程,大大提高了开发效率和管理的方便。

三:版本控制术语

存储库:具有受版本控制的所有文件的完整修订历史的共享数据库。

签入文件或目录:将工作目录作为新版本复制回存储库。

签出文件或目录:从存储库中将文件的最新版本复制到工作空间,签出目录时,将牵出该目录下的所有文件和子目录。

提交文件或目录:与签入文件或目录相同,用户提交更改,对各自工作文件副本做了修改,并将更改的文件提交到存储库。

冲突:当多位开发人员对同一文件放工作副本进行更改,并将修改文件提交到存储库时,他们的工作可能发生冲突。CVS或Subversion或Git会检测冲突并要求某个人先解决该冲突,然后再提交他们的更改。

合并:将对相同文件的不同工作副本进行的多个更改合并到资源存储库中,合并是一种管理冲突的策略,允许多名开发人员同时工作(不必对文件上锁),然后将他们的工作并入一个组合版本中。当对同一文件的不同行进行两组更改时,合并这两组更改很容易,而合并操作也可正常进行。但对文件的同一行或几行进行更改时,将发生冲突,这就要求有人手动编辑该文件进行统一,然后才能将这些更改成功提交到资源存储库。

解决:当两名开发人员试图提交发生冲突的更改,而造成文件内的冲突时,必须通过手动编辑该文件进行处理。必须有人逐行检查该文件,以接受一组更改并删除另一组更改,除非冲突解决,否则存在冲突的文件无法成功提交到资源库中。

修订版本:对各个文件进行具体更新的编号草案,每次编辑文件并将文件提交到存储库时,该文件的修订版本号将会增加。

版本:用于标识文件集的编号方案,可在某个时间点标记并命名这些文件集。

工作空间:要在本地硬盘或Unix用户账户上编辑的文件副本,在工作空间中编辑文件时,这些文件将不再与存储库同步,这就是进度,然后需要将更改返回存储库,方便他人可以看到这些修改。

get√   感谢互动百科。。

转载于:https://my.oschina.net/u/3701483/blog/1546530

你可能感兴趣的文章
JAVA Oauth 认证服务器的搭建
查看>>
python的模式匹配 - 正则表达式
查看>>
新浪微博客户端(24)-计算原创微博配图frame
查看>>
macOS SIP 权限设置
查看>>
使用Cubic Spline通过一组2D点绘制平滑曲线
查看>>
读Ext之八(原生事件对象的修复及扩充)
查看>>
权限设计的三层境界续
查看>>
蓝点中文_Linux2.0 实验九 目录与文件管理 (一)
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(16)-权限管理系统-漂亮的验证码...
查看>>
【总目录】本博客博文总目录-实时更新
查看>>
Razor语法大全
查看>>
Serlvet学习笔记之二—不同页面共享数据
查看>>
Css3 - 动画旋转
查看>>
[Angular 2] Handling Click Events with Subjects
查看>>
django-redis和redis-py
查看>>
开发中常用js记录(二)
查看>>
Codeforces 715A. Plus and Square Root[数学构造]
查看>>
nodejs REPL(交互式解释器)
查看>>
颠覆你的认知,带你领略史上最为齐全的微软黑科技之旅
查看>>
【转】EL表达式 (详解)
查看>>