version control

时间:2023-01-15 08:26:44

what

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

how

版本控制基本流程如下:

(1)创建配置项。
项目成员依据《配置管理计划》,在配置库中创建属于其任务范围内的配置项。此时配置项的状态为“草稿”,其版本号格式为0.YZ。
(2)修改状态为“草稿”的配置项目。
项目成员使用配置管理软件的Check in/check out功能,可以*修改处于“草稿”状态的配置项,版本号格式为0.YZ。
(3)技术评审或领导审批。
如果配置项是技术文档,则需要接受技术评审。如果配置项是“计划”这类文件,则需要项目经理(或上级领导)的审批。若配置项通过了技术评审或领导审批,则转向下一步·否则转回上一步。
(4)正式发布。
配置项通过技术评审或领导审批之后。则配置项的状态从“草稿”变为“正式发布”,版本号格式为X.Y。
(5)变更。
修改处于“正式发布”状态的配置项,必须按照“变更控制流程”执行。

why

你的项目团队为什么需要一个自动化的版本控制工具?有以下几个理由:

  • 它将跟踪项目的历史和演变,所以你不必亲为。对于项目的每个变化,都会有一个日志来记录谁做的修改,为什么修改,什么时候进行的修改,修改了些什么。

  • 当你与其他人合作时,版本控制软件使你们更便于协作。例如,当人们或多或少同时进行可能不兼容的更改时,软件将帮助你识别和解决这些冲突。

  • 它可以帮助你从错误中恢复。如果您进行的更改后来证明是错误的,您可以将一个或多个个文件还原到一个早期的版本。事实上,一个真正好的版本控制工具甚至可以帮助你有效地确定问题是何时引入的(详见“找出错误的源头”)。

  • 可以让你并行地工作,并管理你在项目中多个版本之间的跳转。

一个项目,无论只有你一个人,还是还有几百个别人,这些理由中的大部分都成立——至少在理论上。

在两种不同规模的项目(“个人”和的“大型团队”)中,版本控制的可行性关键在于它的使用收益和使用开销之比。一个难以理解和使用的版本控制工具必定会加大开销。

对于一个五百人的项目,在没有版本控制工具和方法的情况下,由于其自身的体量,有可能会立即崩溃。这种情况下,版本控制的开销几乎可以忽略不计,因为没有它,项目注定会失败。

另一方面,版本控制工具对于一个人的“快速上手”式开发看上去并不合适,因为其真正的使用开销与项目的总体开销相接近,是吗?

Mercurial独有地支持这两种级别的开发。由于容易上手,你可以非常轻松地在几分钟内学会基本知识,并在最小的项目中使用它来进行版本控制。它的简单性意味着不会有很多深奥的概念或命令序列需要你去掌握,而只需专注于你真正想做的工作。同时,Mercurial的高性能和点对点的特性又可以让您轻松的处理大型项目。

任何版本控制工具都不能挽救一个糟糕的项目,但是,选择一个好的工具能够对项目进展是否顺畅造成巨大的影响。

version control的更多相关文章

  1. xcode svn commit is not under version control (1) & git commit

    使用Xcode提交一个第三方库时,由于包含资源文件,总是提交不了,提示报错:XXX commit is not under version control (1) 网上查了下,得知 xcode对于sv ...

  2. which type of VS files should be committed into a version control system

    which type of VS files should be committed into a version control system? aps, no: last resource edi ...

  3. svn: warning: 'xxxxxx' is already under version control

    [root@NGINX-APACHE-SVN pm]# svn status ? plugins ? files ? images ? data ? resources [root@NGINX-APA ...

  4. svn is already under version control问题解决

    svn ci 时出现 xx is already under version control,然后无法提交,出现这个问题的原因是你所提交的文件或目录是其他SVN的东西,即下面有.svn的目录,需要先把 ...

  5. Git&Version Control

    Git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1]  Git 是 Linus Torvalds 为了帮助管理 Linux 内 ...

  6. Version Control/Git,SVN

    一.Version Control 1.什么是Version Control 版本控制(Version Control)是指对软件开发过程中各种程序代码.配置文件及说明文档等文件变更的管理,是软件配置 ...

  7. xcode svn commit is not under version control 和 git常用指令

    使用Xcode提交一个第三方库时,由于包含资源文件,总是提交不了,提示报错:XXX commit is not under version control (1) 网上查了下,得知 xcode对于sv ...

  8. version control的简单认知

    version control 版本控制是一种记录文件或文件集随时间变化的系统,以便您以后可以调用特定版本.对于本书中的示例,您将使用软件源代码作为受版本控制的文件,但实际上您可以使用计算机上的几乎任 ...

  9. 【转】svn:is not under version control and is not part of the commit, yet its child解决办法

    来自:http://blog.csdn.net/lufeng20/article/details/7641093 在把写好的代码提交到svn上面时,遇到了一个错误如下: svn: Commit fai ...

  10. 版本控制 version control和团队协作

    这些技术你可能暂时不会用到,但是一旦软件体量变大,开发人数增加,这就带来质变,需要借助一些工具或者技术才能完成这些复杂的工程. 你可以从最简单的情况思考,你可以对任何类型的文件进行版本控制,比如一个p ...

随机推荐

  1. 奇妙的CSS之布局与定位

    前言 关于布局与定位是Web前端开发里非常基础而又重要的部分.介绍相关知识的文章,很容易就可以找到.虽然,这方面的知识点不是很多,但我们如果不弄清楚,在运用时候往往会出现预料之外的布局,这些“意外”有 ...

  2. appserver配置虚拟主机

    1, apach配置文件开启虚拟主机服务(C:\AppServ\Apache2.2\conf\httpd.conf)大概561行的位置 # Virtual hostsInclude conf/extr ...

  3. [USACO09HOL]假期绘画Holiday Painting

    观察到列数只有15,可以想到对于每一列维护一颗线段树 sum表示该区间与目标矩阵中该区间相同元素个数 lazy表示该区间应被修改成什么颜色 g即目标矩阵中该区间白色格子的个数 显然一个区间的sum=区 ...

  4. 中国大学MOOC-陈越、何钦铭-数据结构-2017春

    中国大学MOOC-陈越.何钦铭-数据结构-2017春 学习地址 详细学习内容 Github记录地址 欢迎fork和star,有惊喜值得学习! 参考学习笔记 参考AC代码 数据结构和算法学习笔记 学习内 ...

  5. bean生命周期_Junit测试使用factory模式

    在面试某互联网_保险 公司, 被问到了spring中bean的生命周期,不禁联想到我们之前作 junit测试时,使用了Factory模式,而没有用Mock.

  6. 【慕课网实战】Spark Streaming实时流处理项目实战笔记五之铭文升级版

    铭文一级: 单节点单broker的部署及使用 $KAFKA_HOME/config/server.propertiesbroker.id=0listenershost.namelog.dirszook ...

  7. STM32 外部中断

    1)STM32一般有19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断.线 16:连接到 PVD 输出. 线 17:连接到 RTC 闹钟事件. 线 18:连接到 USB 唤醒事件. 2) ...

  8. 剑指offer四十九之把字符串转换成整数

    一.题目 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 二.思路 详见代码. 三.代码 public class Solution { ...

  9. 在pos:a元素不设定宽度的情况下,他的最大宽度是受父元素的宽度所限制的。

    <div style="width:80px;height:50px;position:relative;left:50px;"> <ul style=&quot ...

  10. RS-485收发的零延时转换电路

    转自:http://www.dzsc.com/data/html/2007-5-28/41097.html RS-485是一种基于差分信号传送的串行通信链路层协议.它解决了RS-232协议传输距离太近 ...