美文网首页
版本控制系统Version Control System

版本控制系统Version Control System

作者: drawing818 | 来源:发表于2018-03-12 22:56 被阅读0次

1.关于版本控制

什么是“版本控制”?

版本控制(Version Control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 

为什么要使用版本控制?

如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。 有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。

2.版本控制系统

2.1 本地版本控制系统

许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 好处:简单

坏处:容易犯错。 有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。

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

本地版本控制

其中最流行的一种叫做 RCS,现今许多计算机系统上都还看得到它的踪影。  它的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

2.2 集中化的版本控制系统

如何让在不同系统上的开发者协同工作? 于是,集中化的版本控制系统(Centralized Version Control Systems,CVCS)应运而生。 这类系统,诸如 CVS、Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 这已成为版本控制系统的标准做法。

集中化的版本控制

好处:每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

坏处:这么做最显而易见的缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。 本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

2.3 分布式版本控制系统

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

分布式版本控制

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

3.常用的版本控制系统

3.1 SVN

SVN是Subversion的简称,是一个开放源代码的集中式的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。SVN就是用于多个人共同开发同一个项目,共用资源的目的。和VSS相比,除开最基本的代码和文件管理功能外,主要的革新是提供了分支的功能,从而解决了VSS文件独占的问题。大幅提升了开发人员的工作效率,谁写完代码,随时可以提交到自己的分支上,最后对所有分支进行合并,解决冲突即可。相比VSS而言,在工作模式上有了翻天覆地的改变。

优点:

1.管理方便,逻辑明确,操作简单,上手快

2.易于管理,集中式服务器更能保证安全性

3.代码一致性非常高

4.有良好的目录级权限控制系统

缺点:

1.对服务器性能要求高,数据库容量经常暴增,体量大

2.必须联网。如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等

3.不适合开源开发

4.分支的管控方式不灵活

3.2 Git

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。作为一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

优点:

1.适合分布式开发,每一个个体都可以作为服务器。每一次Clone就是从服务器上pull到了所有的内容,包括版本信息

2.公共服务器压力和数据量都不会太大

3.速度快、灵活,分支之间可以任意切换

4.任意两个开发者之间可以很容易的解决冲突,并且单机上就可以进行分支合并(Merge)

5.离线工作,不影响本地代码编写,等有网络连接以后可以再上传代码,并且在本地可以根据不同的需要,本地新建自己的分支

缺点:

1.保密性差

2.在更新时内容完全更改的二进制文件和其他大型文件不适用于 Git(可以考虑Git-LFS)

MicroSoft 给出了一个 从集中式版本控制系统迁移到Git的迁移清单

从集中式版本控制系统迁移到Git的迁移清单

相关文章

  • 版本控制系统以及Git介绍

    版本控制系统(Version Control System - VCS) 版本控制系统(VCS)最基本的功能是版本...

  • Git入门知识

    一、 版本控制系统 1 概念与用途 版本控制系统,英文名Version Control System,简称VCS。...

  • 英文收录

    undo: 撤销 版本控制系统:Version Control System - VCS branch:分支 s...

  • git 廖雪峰教程笔记

    分布式版本控制系统( Distributed Version Control System,简称 DVCS ) 面...

  • Git入门介绍

    其实Git就是一个开源的版本控制系统,Version Control System, 简称VCS。版本控制系统简单...

  • 000 git 版本管理的演变,安装及配置

    vcs出现前 版本控制系统(version control system) 拷贝备份。。。 集中式 VCS 版本库...

  • git的使用

    版本控制工具 什么是版本控制系统? 版本控制系统(Version Control System):是一种记录一个或...

  • VCS简介(GIT GITLAB)

    VCS(版本控制系统) 版本控制系统(version control system),是一种记录一个或若干文件内容...

  • 版本管理

    ·版本控制系统 版本控制系统即VCS(version control system)是一种记录若干文件的修订记录的...

  • Git 简介

    版本管理 简介 版本控制系统版本控制系统即VCS(version control system)是一种记录一个或若...

网友评论

      本文标题:版本控制系统Version Control System

      本文链接:https://www.haomeiwen.com/subject/jzgofftx.html