version control

version control

        版本控制(version control)是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

        版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了已录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。
        具体来说,在每一项开发任务中,都需要首先设定开发基线,确定各个配置项的开发初始版本,在开发过程中,开发人员基于开发基线的版本,开发出所需的目标版本。当发生需求变更时,通过对变更的评估,确定变更的影响范围,对被影响的配置项的版本进行修改,根据变更的性质使配置项的版本树继续延伸或产生新的分支,形成新的目标版本,而对于不受变更影响的配置项则不应发产生变动。同时,应能够将变更所产生的对版本的影响进行记录和跟踪。必要时还可以回退到以前的版本。例如当开发需求或需求变更被取消时,就需要有能力将版本回退到开发基线版本。在曾经出现过的季度升级包拆包和重新组包的过程中,其实就是将部分配置项的版本回退到开发基线,将对应不同需求的不同分支重新组合归并,形成新的升级包版本。
        版本控制是软件配置管理的核心功能。所有置于配置库中的元素都应自动予以版本的标识,并保证版本命名的唯一性。版本在生成过程中,自动依照设定的使用模型自动分支、演进。除了系统自动记录的版本信息以外,为了配合软件开发流程的各个阶段。还需要定义、收集一些元数据来记录版本的辅助信息和规范开发流程,并为今后对软件过程的度量做好准备。当然如果选用的工具支持,这些辅助数据将能直接统计出过程数据,从而方便软件过程改进活动的进行。对于配置库中的各个基线控制项,应该根据其基线的位置和状态来设置相应的访问权限。一般来说,对于基线版本之前的各个版本都应处于被锁定的状态,如需要对它们进行变更,则应按照变更控制的流程来进行操作。
内容:
        版本控制包括:检入检出控制、分支和合并、历史记录。

        1.检入检出控制
        软件开发人员对源文件的修改不能在软件配置管理库中进行,对源文件的修改依赖于基本的文件系统并在各自的工作空间下进行。为了方便软件开发,需要不同的软件开发人员组织各自的工作空间。一般说来,不同的工作空间由不同的目录表示,而对工作空间的访问,由文件系统提供的文件访问权限加以控制。
        访问控制需要管理各个人员存取或修改一个特定软件配置对象的权限。开发人员能够从库中取出对应项目的配置项进行修改,并检入到软件配置库中,对版本进行“升级”;配置管理人员可以确定多余配置项并删除。
        同步控制的实质是版本的检入检出控制。检入就是把软件配置项从用户的工作环境存入到软件配置库的过程,检出就是把软件配置项从软件配置库中取出的过程。检人是检出的逆过程。同步控制可用来确保由不同的人并发执行的修改不会产生混乱。
        2.分支和合并
        版本分支(以一个已有分支的特定版本为起点,但是独立发展的版本序列)的人工方法就是从主版本——称为主干上拷贝一份,并做上标记。在实行了版本控制后,版本的分支也是一份拷贝,这时的拷贝过程和标记动作由版本控制系统完成。版本合并(来自不同分支的两个版本合并为其中一个分支的新版本)有两种途径,一是将版本A的内容附加到版本B中;另一种是合并版本A和版本B的内容,形成新的版本C。
        3.历史记录
        版本的历史记录有助于对软件配置项进行审核,有助于追踪问题的来源。历史记录包括版本号、版本修改时间、版本修改者、版本修改描述等最基本的内容,还可以有其他一些辅助性内容,比如版本的文件大小和读写属性。

流程:

        版本控制基本流程如下:
        (1)创建配置项。
        项目成员依据《配置管理计划》,在配置库中创建属于其任务范围内的配置项。此时配置项的状态为“草稿”,其版本号格式为0.YZ。
        (2)修改状态为“草稿”的配置项目。
        项目成员使用配置管理软件的Check in/check out功能,可以自由修改处于“草稿”状态的配置项,版本号格式为0.YZ。
        (3)技术评审或领导审批。
        如果配置项是技术文档,则需要接受技术评审。如果配置项是“计划”这类文件,则需要项目经理(或上级领导)的审批。若配置项通过了技术评审或领导审批,则转向下一步·否则转回上一步。
        (4)正式发布。
        配置项通过技术评审或领导审批之后。则配置项的状态从“草稿”变为“正式发布”,版本号格式为X.Y。
        (5)变更。
        修改处于“正式发布”状态的配置项,必须按照“变更控制流程”执行。
        1.开源版本控制工具
        开放源码的版本控制工具有很多,如Concurrent Versions System( CVS)、Subversion( SVN)、Vesta、Revision Control System( RCS)、Source Code Control System( SCCS)等。比较常用的两个工具是CVS和SVN。CVS是Dick Grune在1984年~1985年基于RCS开发的一个客户一服务器架构的版本控制软件,长久以来一直是免费版本控制软件的主要选择。SVN的一个重要开发目标是修正CVS中广为人知的缺点,提供一个新的版本控制软件。对于中小规模团队,SVN是一个比较好的开源版本控制工具,SVN常用客户端工具为TortoiseSVN。
        2.成熟的商业工具
        商业工具提供了比开源版本控制工具更多的,尤其是和软件配置管理有关的功能。IBM公司的Rational ClearCase是一款重量级的软件配置管理软件,为大中型软件开发企业提供了版本控制、工作空间管理、平行开发支持以及版本审计,可以为拥有上千开发者的大型项目提供全面配置管理支持。

转载于:https://www.cnblogs.com/wsxzl/p/10477555.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101067.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • oracle sequence用法_oracle session

    oracle sequence用法_oracle session1.   AboutSequences(关于序列)序列是数据库对象一种。多个用户可以通过序列生成连续的数字以此来实现主键字段的自动、唯一增长,并且一个序列可为多列、多表同时使用。序列消除了串行化并且提高了应用程序一致性。(想象一下没有序列的日子怎么办?)2.   CreatingSequences(创建序列)前提:PrerequisitesTocreateasequ

    2022年10月19日
  • 矩阵范数与矩阵的模

    矩阵范数与矩阵的模我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~矩…

  • sqlyog下载安装_sqlyog激活成功教程版

    sqlyog下载安装_sqlyog激活成功教程版地址:https://github.com/webyog/sqlyog-community/wiki/Downloads

  • 大数据开发的工具有哪些?

      作为一个大数据开发人员,每天要与使用大量的大数据工具来完成日常的工作,那么目前主流的大数据开发工具有哪些呢?下面为大家介绍下主流的大数据开发工具。1.HadoopHadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop是一个能够对大量数据进行分布…

  • android toast居中显示_android Toast 弹出在屏幕中间位置以及自定义Toast

    android toast居中显示_android Toast 弹出在屏幕中间位置以及自定义ToastToast我想我们应该使用的都很多,一般我们使用默认设置较多,但是默认设置往往不能满足我们的需求,那我们现在来自定义下:默认Toast:Toast.makeText(MainActivity.this,”点击按钮”,Toast.LENGTH_SHORT).show();设置Toast位置:通过setGravity设置Toast位置,可以是Gravity.CENTER:中间Gravity.BOTT…

  • 01背包问题和完全背包问题「建议收藏」

    01背包问题和完全背包问题「建议收藏」在hihocoder上面两期的题目,一个01背包问题,一个完全背包问题。总结一下!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号