Git分布式版本管理系统前世今生

git分布式版本管理系统

​ Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

​ Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.

一、版本管理系统简介

        如果你是一位作家,你的书稿经常会随着你的思路而不断变化,但如果你只是简单的在单一文档中进行修改,你原先的思路就会抹去,这对于写作是非常不利的。为了改变这种情况,人们往往会在计算机中保存很多不一样的文稿,备注上修改时间和改动地点,但这样依然不是最理想的解决方案,这会导致你的文件夹臃肿,不易管理。而且很容易将文件覆盖,导致原始版本丢失。所以为了解决以上的诸多问题,版本管理系统应运而生。率先出战的选手是本地版本控制系统

1.1 本地版本控制系统(Local Version Control Systems,Local VCSs)

        为了避免本地直接复制文件,重命名文件可能带来的失误,人们很久之前就开发了许多本地版本控制系统,大多是采用某种简单的数据库来记录文件的历次更新差异。

localVCSs.png

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

1.2 集中化的版本管理系统(Centralized Version Control Systems,CVCS)

        接下来如何使不同系统上的开发者协同工作,例如3位科学家共同完成一篇论文的编写,如何控制彼此内容的版本,成为接下来的难点。CVCS应允而生,诸如CVS、Subversion以及Perforce等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人都通过客户端连接到服务器,取出最新的文件或者提交更新。

Centralized Version Control Systems.png

        凡事有利有弊,集中式版本控制系统成功的解决了在不同的系统上诸多开发者协同工作的难题,那弊端是什么呢?

  • 如果有一天存放数据的中央服务器宕机一天,那么在这一天内,所有开发者都无法工作。
  • 甚至核心数据库所在的磁盘发生损坏,又没有备份,那么开发者辛苦准备的文档资料就会丢失,只剩下各自电脑上的版本。
  • 必须联网才能工作,在局域网内,带宽和速度尚能满足需求,但在互联网上,网速会严重影响用户体验。
  • 用户使用的客户端只保留最新的文件,不会保留全部的历史记录。

        本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

        Local VCSs suffer from this same problem whenever you have the entire history of the project in a single place, you risk losing everything.

1.3 分布式版本管理系统(Distributed Version Control Systems,DVCSs)

        于是分布式版本管理系统,DVCSs应运而生,例如Git、Mercurial、Bazaar以及Darcs等,在这类系统中,每个用户的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,包括完整的历史记录。这样一来,任何一处协同工作的服务器发生故障,事后都可以用任何一个本地仓库的镜像修复,重新存储。

Clients don’t just check out the latest snapshot of the files;rather, they fully mirror the repository, including its full history.Thus, if any server dies, and these systems were collaborating via the server, any of the client repostiories can be copied bcak up to the server to restore it.Every clone is really a full backup of all the data.

Distributed Version Control Systems.png

        如上图所示,每个用户的计算机客户端中都保留所有的历史记录,这样,即使Server Computer出现问题,也不用担心丢失版本记录。

二、Git简史

        Git起源于Linux内核社区。

        在1991-2002年间,因为Linux内核的不断扩张,绝大多数Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上。到2002年,Linux内核项目使用了一个专有的分布式版本管理工具BitKeeper来管理和维护代码。(实际上,早在1999年12月,Linux PowerPC项目首先开始使用BitKeeper)

Linux Torvalds 对 BitKeeper的评价是 the best tool for the job

        到2005年,BitKeeper的开发公司BitMover与Linux内核社区结束了合作。实际上,是因为一些大牛在对BitKeeper的免费版进行反向工程,这一举动违背了BitKeeper的使用协议。

Free Software这个短语中的Free可以被理解成“自由”,好像Free as in Freedom中的Free-或者仅仅是“免费”,Free as in Free Beer中的Free。BitKeeper是按照后一种定义免费可用的。允许free/open source软件开发者不用付费就能使用这个工具--前提是这样一个协议:这个免费工具的真正使用者不能同时开发其竞争产品。换句话说,这个工具可以免费 使用freely used,不过不能被随便克隆freely cloned。当然同时,BitMover还有一个更高级的BitKeeper版本是商业产品,需要购买。这两个版本都是BitMover的知识产权

        但与创建Linux不同,Git的创建更多来自于需要,而并非乐趣。Linux Torvalds认为当时世面上除了BitKeeper再无其他优质的版本管理工具,而BitKeeper又与Linux的开源精神相违背,于是Linux的创始人Linux Torvalds领导开发了Git,这款现今最受欢迎的分布式管理系统。

        The first part is that I very much did not want to create a new source control system. Linux was created because I find the low-level interface between hardware and software fascinating - it’s basically a labor of love and personal interest. In contrast, Git was created out of necessity: not because I found source control interesting, but because I absolutely despised most source control systems out there, and the one that I found most palatable and had really worked fairly well in the Linux development model (BitKeeper) had become untenable.

        In 2005, Linux also created Git to help manage the Kernel development process, and it has since become the most popular version control system, trusted by countless open source and proprietary projects.

三、Linux Torvalds关与开源协作的看法

        金钱其实并不是一个很好的激励方式,因为它并不能将人们团结在一起。我认为,真正能够起到激励作用的是:人们参与到一个共同的项目中来,并且真正感觉到自己可以成为这个项目的全面合作伙伴。

Money really isn’t that great of a motivator. It doesn’t pull people together. Having a common project, and really feeling that you really can be a full partner in that project, that motivates people, I think.

四、参考文献:

廖雪峰的Git

An Interview With Linux Torvalds: Linux and Git - Part 1

BitKeeper与Linux,git史前琐事

Pro GIT 在线阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值