在开发人员开发软件、系统的时候,经常会有开发人员叫运维人员更新新的版本,那么你们知道更新新的版本,是整个目录更新,还是某一部分更新?那么旧的版本是要怎么处理呢?整个目录删除了还是保存在另一个目录呢?一般来说,我们都不会把旧版本删除了,会在另外的目录保存下来,以防新版本有问题时候能够回退。

许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单。不过坏处也不少,有时候会混淆所在的工作目录,一旦弄错文件丢了数据就没法撤销恢复。

为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。

本地版本控制系统

大体上本地版本控制系统的原理,可以使用下面的一张原理图来体现,在本地服务器中,对一个文件使用不同的版本进行标识。

在此种模式当中,最流行的应该是一种叫rcs的架构,现今许多计算机系统上都还看得到它的踪影。甚至在流行的 Mac OS X 系统上安装了开发者工具包之后,也可以使用 rcs 命令。它的工作原理基本上就是保存并管理文件补丁(patch)。文件补丁是一种特定格式的文本文件,记录着对应文件修订前后的内容变化。所以,根据每次修订后的补丁,rcs 可以通过不断打补丁,计算出各个版本的文件内容。

版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了已录下来。每一次文件的改变,文件的版本号都将增加。

除了记录版本变更外,版本控制的另一个重要功能是并行开发。什么是是并行开发?如果不知道的话,请继续跟我往下学习。

我们都知道软件开发一般来说是多人同时共同作业的结果,这就是并行开发。但是并行开发是有问题的,因为我们不会时时刻刻就知道对方更新了哪些新的代码,又修改了哪一个接口。而版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高共同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决,于是就有了下面的这种控制系统。

集中式的版本控制系统

什么是集中式的版本控制系统呢?它的存在,就是为了解决不同的开发者共同维护一份数据的功能,其中最著名的,莫过于SVN这个工具了。简单来说,就是有很多的开发人员,他们分别都需要对同一个项目里面导入文件,并且每个人都可以对导入的文件做相关的修改,SVN就是这种机制,他提供了一种类似FTP的方式,可以让你不用远程下载服务器上的文件,而直接对文件做远程的修改,然后同步,这样每个开发人员,只要阅读文件前,进行文件的更新,就可以读取到最新的文件,因此这也是集中式版本控制系统的功能。

但是此类版本控制系统往往都是存放在一台单一的文件系统上的,因此在企业的使用中,都需要考虑高可用,以及相关的可靠性问题。

下面我们介绍另外一种版本控制系统,也是目前最流行的关于比较高效的版本控制系统的架构,目前在很多的企业已经使用,笔者所在的睿江云,也使用了此种方式的版本控制系统。

分布式版本控制系统

分布式版本控制系统( Distributed Version Control System,简称 DVCS ),在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

现在你应该知道什么是版本控制了吧?了解了版本控制是做什么的了。那么下次我们来深入了解一下版本控制的内容有哪些。
下篇预告:《运维自动化之版本控制有哪些内容?》

睿江云计算官网链接:https://www.eflycloud.com/home?from=RJ_0024

转载于:https://blog.51cto.com/13475644/2397708

运维自动化之何为版本控制?相关推荐

  1. 运维自动化要点——可运维性

    运维自动化是我们所渴望获得的,但是我们在一味强调自动化能力时,却忽略了影响自动化落地的一个关键因素.那便是跟运维朝夕相处,让人又爱又恨的业务架构.部分参考于<linux就该这么学>,希望对 ...

  2. puppet运维自动化之yum仓库管理

    puppet运维自动化之yum仓库管理 2012-05-05 21:03 sky mysqlops.com 字号:T | T 系统运维人员,经常需要安装或者升级特定的升级包,有的是自己编译的rpm包, ...

  3. Servicehot和你说说运维自动化的那些事儿

    2019独角兽企业重金招聘Python工程师标准>>> 运维管理兜兜转转十几余载,大家的运维管理再也不是小米加步枪.人工费力拉线扛服务器的传统时代,如你所知,这些年大家张口闭口谈的都 ...

  4. 游戏平台运维自动化扩展之故障自愈

    马辰龙,负责某大型网页游戏平台的运维开发,专注于运维自动化.监控系统故障自愈研究,擅长Perl开发.正则表达式.日志精确匹配. 网络游戏是对用户体验要求最严苛的IT行业之一,任何IT问题造成的业务不稳 ...

  5. 运维自动化------ansible搭建

    运维自动化发展历程及技术应用 IaaS基础设施即服务(相当于卖硬件) ,PaaS平台即服务(卖操作系统),SaaS软件即服务(卖软件) 企业实际应用场景分析 灰度环境(生产环境的一部分) 功能:在全量 ...

  6. 贝聊运维自动化体系演化

    文章作者:刘汉华,贝聊高级运维工程师 马上要进入2018年了,这里有必要对我们的"运维自动化体系",有所回顾及展望; 一.运维自动化发展通常划分 如果把运维自动化发展按上图作划分, ...

  7. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(二)

    现在开始介绍php+mysql+shell监控系统 1.目的 此监控系统主要是通过php+mysql+shell的方式,通过shell脚本对各个机器的其各个服务进行监控,达到及时的了解其各个应用服务的 ...

  8. 舍本求末的运维自动化技术热潮

    运维自动化是2010年开始炒得很热的一个概念,也让很多工程师.用人单位瞎激动了很久,我也跟风学过puppet和python,求职双方也经常在面试时花大量时间谈运维自动化. 但冷静下来想想,所谓自动化, ...

  9. puppet运维自动化之用户管理

    系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限.你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户 ...

最新文章

  1. C#中调用Windows API的要点
  2. 关于System.TypeInitializationException异常
  3. C/C++ 框架,类库,资源集合
  4. CentOs6.5下安装vim7.4
  5. 自动完成--autoComplete插件(2)
  6. 23种设计模式之策略模式
  7. 第五届“强网杯”青少年专项赛盛大开赛
  8. 安卓与HTML简单的交互使用
  9. Ubuntu 出现 Invalid operation update 或 Invalid operation upgrade的解决办法
  10. 递归 人理解循环 神理解递归
  11. java方法_Java方法
  12. PHP+MYSQL 出现乱码的解决方法
  13. PHP微信公众号开发常用功能
  14. Realsense D435i 使用
  15. error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\
  16. attactEvent与addEventListener
  17. (附源码)计算机毕业设计SSM建筑工程管理系统
  18. 程序员工资为什么普遍很高,原来是因为这个。。。
  19. 面试复试重点 算法与数据结构
  20. 1896年 雅典 第一届奥运会

热门文章

  1. error: storage class specified for parameter问题-转
  2. Ubuntu 12.04下安装搜狗拼音 + 安装搜狗皮肤-转
  3. L1-006. 连续因子-PAT团体程序设计天梯赛
  4. 我的世界java骷髅马_我的世界:骷髅马材质更新,老MC教你获得骷髅马技巧,萌新:真好...
  5. python操作neo4j_在python中操作neo4j数据库的方法
  6. python声明编码_Python 2.x 编码声明:是coding:utf-8还是coding=urf-8呢
  7. AIX 与Linux 中crontab 介绍
  8. Zookeeper原理架构
  9. 非广告--推荐Dynatrace:树立数字化性能管理DPM标杆
  10. 简单的Net::FTP模块的简单应用