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. P1348 Couple number

    题目描述 任何一个整数N都能表示成另外两个整数a和b的平方差吗?如果能,那么这个数N就叫做Couple number.你的工作就是判断一个数N是不是Couple number. 输入输出格式 输入格式 ...

  2. cpanm Plack相关

    1.curl -L https://cpanmin.us | perl - --sudo App::cpanminus 参考:https://metacpan.org/pod/App::cpanmin ...

  3. 交叉熵理解:softmax_cross_entropy,binary_cross_entropy,sigmoid_cross_entropy简介

    cross entropy 交叉熵的概念网上一大堆了,具体问度娘,这里主要介绍深度学习中,使用交叉熵作为类别分类. 1.二元交叉熵 binary_cross_entropy 我们通常见的交叉熵是二元交 ...

  4. 在docker集群下,使用VNC,物理机器重启后VNC失败解决

    首先重装咯: sudo apt-get update sudo apt-get install ubuntu-desktop gnome-panel gnome-settings-daemon met ...

  5. 一条分页的SQL语句

    1.概述 在网页中如果显示的数据太多就会占据过多的页面,而且显示速度也会很慢.为了控制每次在页面上显示数据的数量,就可以利用分页来显示数据. 2.技术要点 在SQL Server中要实现SQL分页,需 ...

  6. java operate

    class OperateDemo { public static void main(String[] args) { /* + - * / %(取余数) */ int x = 2810; Syst ...

  7. kettle使用笔记1--基本安装和使用

    参考来源 https://blog.csdn.net/qq_36698956/article/details/80751655,在这个文章基础上实际使用增加的. 一,安装,采用的是下载官方网站的win ...

  8. ADDED、ADDED_TO_STAGE、REMOVED、REMOVED_FROM_STAGE这几个事件的区别

    var _container:Sprite = new Sprite(); _container.addEventListener(Event.ADDED,onAdded); _container.a ...

  9. nginx屏蔽ip配置

    屏蔽单个IP的命令是 deny 192.168.201.1 封ip段192 deny 192.0.0.0/8 封ip段192.168 deny 192.168.0.0/16 封ip段192.168.2 ...

  10. poj2777(线段树)

    题目链接:https://vjudge.net/problem/POJ-2777 题意:有L块连续的板子,每块板子最多染一种颜色,有T种(<=30)颜色,刚开始将所有板子染成颜色1,O次操作(包 ...