Version Control 版本控制
一、version control是什么:
version control版本控制,是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。
二、version control的功能:
版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了已录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。
具体来说,在每一项开发任务中,都需要首先设定开发基线,确定各个配置项的开发初始版本,在开发过程中,开发人员基于开发基线的版本,开发出所需的目标版本。当发生需求变更时,通过对变更的评估,确定变更的影响范围,对被影响的配置项的版本进行修改,根据变更的性质使配置项的版本树继续延伸或产生新的分支,形成新的目标版本,而对于不受变更影响的配置项则不应发产生变动。同时,应能够将变更所产生的对版本的影响进行记录和跟踪。必要时还可以回退到以前的版本。例如当开发需求或需求变更被取消时,就需要有能力将版本回退到开发基线版本。在曾经出现过的季度升级包拆包和重新组包的过程中,其实就是将部分配置项的版本回退到开发基线,将对应不同需求的不同分支重新组合归并,形成新的升级包版本。
版本控制是软件配置管理的核心功能。所有置于配置库中的元素都应自动予以版本的标识,并保证版本命名的唯一性。版本在生成过程中,自动依照设定的使用模型自动分支、演进。除了系统自动记录的版本信息以外,为了配合软件开发流程的各个阶段。还需要定义、收集一些元数据来记录版本的辅助信息和规范开发流程,并为今后对软件过程的度量做好准备。当然如果选用的工具支持,这些辅助数据将能直接统计出过程数据,从而方便软件过程改进活动的进行。对于配置库中的各个基线控制项,应该根据其基线的位置和状态来设置相应的访问权限。一般来说,对于基线版本之前的各个版本都应处于被锁定的状态,如需要对它们进行变更,则应按照变更控制的流程来进行操作。
三、为什么使用version control(与git结合)
1. 版本库就是一个仓库,你把东西放进去(通常是你编写的程序代码),然后再在需要的时候拿出来。通常这种仓库都有一个很神奇的地方,你不但能看到你放进去的东西现在的样子,还能看到它以前的样子,这就是版本了,同一件东西每次放进去时的样子都会被保留下来,所以你可以追溯这个东西在任何时期的样子。那么控制呢?那就有管理的概念在里面了。首先仓库有自己的结构(通常就是个数据库),进入仓库的东西都按照这一结构存放着,无论你把东西放进还是拿出也要遵循你所用仓库的标准(用专用的版本控制命令或程序),而依靠所提供的程序或命令,你就可以操作这个仓库,控制里面的内容,并且想看某个东西的任何某个版本都可以。世界上无数大大小小的开发项目都在使用各种各样的版本控制系统,原因在于它的优点对于一个项目开发来说是无比重要。
一个最简单的开发团队,也许就两三个人,他们共同完成一个软件的开发。每个人都在修改、添加、删除着自己本地硬盘上的代码,当他们把这些代码汇总起来时,麻烦出现了。到底谁改了哪些文件,具体是文件里的哪部分被改动过?A的修改会不会把B的修改覆盖掉?汇总的工作变得很危险,需要非常小心,一旦出错后果不堪设想。显然此时,效率将会是无比的低下,如果某个地方出错,可能整个汇总工作就要重来一遍。这只是两三人的小团队,如果是几十人几百人的大团队呢?那将会是噩梦如果这个团队采用了版本控制。那么版本控制软件在每次提交的时候都会主动合并所有人的修改并解决可能发生的冲突。每个人手里一直都是汇总好的代码。当开发进行到一定阶段,可以直接拿去测试,不需要再有额外的工作来浪费时间。另外,你还可以知道,程序的某个Bug,是怎么出现的(被谁以及什么时候引入进来的)。备注:上述第1点转自http://www.ydmsh.com/www/Blog/Show/id/147/
2.Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。从版本库的安全性上,Git在这方面完胜SVN。首先Git是分布式版本控制系统,每个用户都相当于一份备份, 管理员无需为数据备份而担心。再有Git中包括提交、文件内容等都通过SHA1哈希保证数据的完整性, 任何恶意篡改历史数据都会被及时发现从而被挫败。对合并更好的支持,更少的冲突,更好的冲突解决,因为Git基于对内容的追踪而非对文件名追踪,所以遇到一方或双方对文件名更改时, Git能够很好进行自动合并或提供工具辅助合并。而SVN遇到同样问题时会产生树冲突, 解决起来很麻烦。Git的基于DAG(有向非环图)的设计比SVN的线性提交提供更好的合并追踪, 避免不必要的冲突,提高工作效率。
Version Control 版本控制的更多相关文章
- idea Version Control 版本控制窗口/视图显示
原文链接:https://blog.csdn.net/torpidcat/article/details/86471745 显示方式: 或者:
- Version Control/Git,SVN
一.Version Control 1.什么是Version Control 版本控制(Version Control)是指对软件开发过程中各种程序代码.配置文件及说明文档等文件变更的管理,是软件配置 ...
- 关于 version control
1.什么是 version control 版本控制(Vevision control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程.此外,版本控制也是一种软体工程技巧,借此能在软体 ...
- 版本控制 version control和团队协作
这些技术你可能暂时不会用到,但是一旦软件体量变大,开发人数增加,这就带来质变,需要借助一些工具或者技术才能完成这些复杂的工程. 你可以从最简单的情况思考,你可以对任何类型的文件进行版本控制,比如一个p ...
- 代码版本控制[version control]之Git
如何多人协同开发同一个项目? 使用代码版本控制[version control]软件, 目前市面上比较流行的代码版本控制器有: git,svn,csv 1. 使用git管理代码版本 本项目使用git管 ...
- about Version Control(版本控制)
what: 版本控制系统是一种软件,它可以帮助您跟踪代码随时间的变化. 在编辑代码时,您告诉版本控制系统对文件进行快照. 版本控制系统将永久保存该快照,以便在以后需要时可以收回它. 如果没有版本控制, ...
- version control(关于版本控制)
版本控制(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 这个系统可以自动帮我们备份文件的每一次更改,并且可以非常方便的恢复到 ...
- Git&Version Control
Git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内 ...
- version control的简单认知
version control 版本控制是一种记录文件或文件集随时间变化的系统,以便您以后可以调用特定版本.对于本书中的示例,您将使用软件源代码作为受版本控制的文件,但实际上您可以使用计算机上的几乎任 ...
随机推荐
- Zabbix3.4.7监控windows进程
1.首先,找到要监控进程的主机 创建新的监控项 然后应用集选择processes,点击添加,此处是以zabbix_agentd.exe为例添加 2. 为此监控项添加触发器 注意触发器表达式的编写,上面 ...
- Linux运维工程师需要掌握什么才能胜任工作呢
万丈高楼平地起,所有一切的高深的技术都离不开最基本的技术,那么作为运维工程师的你,什么是最基本的技术呢,毫无疑问是Linux,Linux 是你所有一切技术的根源,试想一下如果你连基础的操作命令都不知道 ...
- netty]--最通用TCP黏包解决方案
netty]--最通用TCP黏包解决方案:LengthFieldBasedFrameDecoder和LengthFieldPrepender 2017年02月19日 15:02:11 惜暮 阅读数:1 ...
- unity中实现三个Logo图片进行3秒钟的若隐若现后互相切换Logo图片
private List<Sprite> storeTexture; public void Start() { storeTexture = new List<Sprite> ...
- 主机访问虚拟机centos7的服务器
一.虚拟机开启桥梁接 1.编辑-->虚拟网络编辑器 2.虚拟机-->设置 二.Centos的配置---关闭防火墙下的服务器接口 Centos7.0 默认使用firewall作为防火墙,这里 ...
- asp.net webapi 返回json结果的方法
第一种: public static void Register(HttpConfiguration config) { //1.将默认的xml格式化程序清除 GlobalConfiguration. ...
- 读书笔记 C#委托的BeginInvoke、EndInvoke之浅析
c#中有一种类型叫委托,它是一种引用类型.可以引用静态与非静态的方法,且这些方法的参数列表和返回值类型必须与所声明的委托一致. 委托引用的方法可以通过BeginInvoke和EndInvoke来异步进 ...
- MyEclipse复制js文件乱码
MyEclipse复制js文件乱码 右击js文件:
- 2.16 C++类与new和delete操作符
参考: http://www.weixueyuan.net/view/6347.html 总结: 当我们需要为类对象动态分配存储空间时,我们应该使用C++语言提供的new与new[]操作符,而不要使用 ...
- SecureCRT使用(转)
功能介绍 连接概述 1.当您启动SecureCRT时,您将看到“快速连接”对话框与主SecureCRT窗口一起出现. 2.有几种接口可用于连接远程机器:快速连接对话框,工具栏上的连接栏,会 ...