version control的简单认知
version control
版本控制是一种记录文件或文件集随时间变化的系统,以便您以后可以调用特定版本。对于本书中的示例,您将使用软件源代码作为受版本控制的文件,但实际上您可以使用计算机上的几乎任何类型的文件来执行此操作。版本控制,也被称为修订控制或源控制,是对文档的更改,管理计算机程序,大型网站,以及其他信息集合。更改通常由数字或字母代码标识,称为“修订号”,“修订级别”或简称“修订版”。例如,初始文件集是“修订版1”。进行第一次更改时,结果集为“版本2”,依此类推。每个修订都与时间戳和进行更改的人相关联。可以比较,恢复和某些类型的文件的修订,组织和控制修订的逻辑方法的需要几乎与编写存在一样长,但在计算时代开始时,修订控制变得更加重要和复杂。书籍版本和规范修订版的编号可以追溯到仅印刷版时代。今天,最有能力(以及复杂)的版本控制系统是在软件开发中使用的系统,其中一组人可以同时对相同的文件进行更改。
本地版本控制系统
很多人选择的版本控制方法是将文件复制到另一个目录(如果它们很聪明,可能是带时间戳的目录)。这种方法很常见,因为它非常简单,但也非常容易出错。很容易忘记你所在的目录并意外写入错误的文件或复制你不想要的文件。
为了解决这个问题,程序员很久以前就开发了一个本地VCS,它有一个简单的数据库,可以对文件的所有更改进行修订控制。
集中版本控制系统
人们遇到的下一个主要问题是他们需要与其他系统上的开发人员协作。为了解决这个问题,开发了集中版本控制系统(CVCS)。这些系统(例如CVS,Subversion和Perforce)具有包含所有版本化文件的单个服务器,以及从该中心位置检出文件的许多客户端。多年来,这一直是版本控制的标准。
此设置提供了许多优势,尤其是在本地VCS上。例如,每个人都知道项目中的其他人正在做什么。管理员可以对谁可以做什么进行细粒度的控制,管理CVCS比处理每个客户端上的本地数据库要容易得多。
但是,这种设置也有一些严重的缺点。最明显的是集中式服务器所代表的单点故障。如果该服务器停机一小时,那么在那个小时内,任何人都无法进行协作或将版本化更改保存到他们正在处理的任何内容中。如果中央数据库所在的硬盘损坏,并且没有保留适当的备份,那么您绝对会丢失所有内容 - 项目的整个历史记录,除了人们碰巧在本地计算机上发生的任何单个快照。本地VCS系统也遇到同样的问题 - 只要您将项目的整个历史记录放在一个地方,就有可能失去一切。
分布式版本控制系统
这就是分布式版本控制系统(DVCS)介入的地方。在DVCS(例如Git,Mercurial,Bazaar或Darcs)中,客户端不只是查看文件的最新快照; 相反,它们完全镜像了存储库,包括其完整的历史记录。因此,如果任何服务器死亡,并且这些系统通过该服务器进行协作,则可以将任何客户端存储库复制回服务器以还原它。每个克隆都是所有数据的完整备份。

此外,许多这些系统可以很好地处理他们可以使用的多个远程存储库,因此您可以在同一个项目中以不同的方式与不同的人群进行协作。这允许您设置在集中式系统中不可能的多种类型的工作流,例如分层模型。
version control的简单认知的更多相关文章
- Version Control/Git,SVN
一.Version Control 1.什么是Version Control 版本控制(Version Control)是指对软件开发过程中各种程序代码.配置文件及说明文档等文件变更的管理,是软件配置 ...
- 版本控制 version control和团队协作
这些技术你可能暂时不会用到,但是一旦软件体量变大,开发人数增加,这就带来质变,需要借助一些工具或者技术才能完成这些复杂的工程. 你可以从最简单的情况思考,你可以对任何类型的文件进行版本控制,比如一个p ...
- 代码版本控制[version control]之Git
如何多人协同开发同一个项目? 使用代码版本控制[version control]软件, 目前市面上比较流行的代码版本控制器有: git,svn,csv 1. 使用git管理代码版本 本项目使用git管 ...
- about Version Control(版本控制)
what: 版本控制系统是一种软件,它可以帮助您跟踪代码随时间的变化. 在编辑代码时,您告诉版本控制系统对文件进行快照. 版本控制系统将永久保存该快照,以便在以后需要时可以收回它. 如果没有版本控制, ...
- Version Control 版本控制
一.version control是什么: version control版本控制,是指对软件开发过程中各种程序代码.配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一. 二.versi ...
- version control(关于版本控制)
版本控制(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 这个系统可以自动帮我们备份文件的每一次更改,并且可以非常方便的恢复到 ...
- 关于 version control
1.什么是 version control 版本控制(Vevision control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程.此外,版本控制也是一种软体工程技巧,借此能在软体 ...
- xcode svn commit is not under version control (1) & git commit
使用Xcode提交一个第三方库时,由于包含资源文件,总是提交不了,提示报错:XXX commit is not under version control (1) 网上查了下,得知 xcode对于sv ...
- 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 ...
随机推荐
- 记一次maven的包冲突经历
上周工作遇到一个特别棘手的bug,花了我一天时间去搞. 事情是这样的,打包那边的同事过来跟我说我的项目无法运行自动打包,卡在maven package上面,报错为:[error]未经检查的异常,需要捕 ...
- Trait基础
Trait基础 在Scala中,Trait是一种特殊概念.首先,Trait可以被作为接口来使用,此时Trait与Java的接口非常类似.同时在Trait可以定义抽象方法,其与抽象类中的抽象方法一样,不 ...
- mousedown、mousemove、mouseup和touchstart、touchmove、touchend
拖动时候用到的三个事件:mousedown.mousemove.mouseup在移动端都不起任何作用.毕竟移动端是没有鼠标的,查资料后发现,在移动端与之相对应的分别是:touchstart.touch ...
- python学习之旅(二)
Python基础知识(1) 一.变量 变量名可以由字母.数字.下划线任意组合而成. 注意:1.变量名不能以数字开头: 2.变量名不能为关键字: 3.变量名尽量起有意义的,能够通过变量名知道代表的是什么 ...
- WebH
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...
- makefile编写规则
cc = g++ -std=c++11 prom = calc deps = FtTest.h obj = FtTest.o newft.o LIBS = -lgtest_c11 $(prom): $ ...
- [yum] yum加速
通常,以我对于个人生活和工作品质的要求,并没有这个需求. 因为我的宽带费很贵,独享.就算是centos主站,也很快.但是当你去了一些办公环境恶劣的地方上班的时候, 也难免动用一些小技巧.如下: 装这个 ...
- FastJson一些常见方法(API):处理JSON变得好简单
fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果说明比gson快大约6倍 JSON帮助类 这个可以做一个实例研究代码,也可以作为一个工具类 ...
- U盘出现很多.exe的文件处理方案
1.原来优盘显示隐藏系统文件后,会有MyDocument文件夹和MyDocument.exe文件两个. 2.在MyDocument文件夹下新建文件夹名为“安全区”的空文件夹. 3.在U盘的根目录下新建 ...
- Jmeter学习之-获取登录的oken值(2)
此篇介绍获取登录token的第二种方式--json提取器提取 PS:此方法针对接口返回值为json串格式 在登录请求上右键添加JSON提取器 ...