SVN,GIT版本控制系统简史

1972年,著作《高级 UNIX编程》的UNIX 牛人 Marc J. Rochkind, 在贝尔实验室开发了SCCS(Source Code Control System)。这是现代RCS、CVS、SVN、GIT等等版本控制系统的鼻祖。

版本控制系统如今优40多年的历史,纵观 IT 界,版本控制系统已经成为了我们做软件开发的必备技能,我们通过 版本管理代码、文字等等。

image.png

版本管理的进化史,就是我们的信息时代的进化史。从软件开发的蛮荒时代,软件的规模逐渐扩大,单人开发到多团队协同,集市与大教堂并存。版本管理系统的进化史,主要分三个阶段单用户版本管理、集中式版本管理和分布式版本管理,从实际的软件系统进化来看,SCSS、RCS到CVS、SVN,再到现在的Git和Mercurial

image.png

青铜时代:单用户版本管理

这个阶段的代表包括SCSS和RCS。1972年由Marc J. Rochkind开发的SCCS。通过将不同版本下的文件单独保存的形式完成,将同一版本的所有文件打包保存。SCCS使用了长达10年的时间。


image.png

直到1982年,Walter F.Tichy 发布了RCS (Revision Control System),提供了较SCCS更多的功能,并将其开源出来,并作为GNU项目的一部分,用以替代SCCS,SCCS当时还不是开源的。


image.png

白银时代:集中式版本管理

1986年创建的CVS也是一款使用时间长,范围广的版本控制软件。但其并不记录文件的更名,移动,并且CVS的commit操作并不支持原子(atomic)操作,这也带来了一定的安全隐患。其定义的branching模型一直沿用到后面的版本控制软件中。2008年5月,CVS的停止开发。

在功能上,CVS采用C/S架构体系,其代码都都存储在服务器端,开发者需从服务器上获得一份代码复制到本机,然后开发。开发者可随时将新代码提交给服务器,也可以通过更新操作获得最新的代码,保持与其他开发者的一致。CVS提供了一组用于与项目中的文件进行交互的命令,但是使用RCS历史文件格式和后台命令。

VCS历史上,CVS首次允许多个开发人员检出并同时处理相同的文件。CVS在处理多人同时修改页面时,采用"先允许修改,再处理冲突"。


image.png

2000伊始,Subversion (SVN)作为CVS的替代品问世,其几乎全面兼容CVS。2009年11月,Subversion被Apapche社区接受,目前由该社区进行开发维护。SVN提供了真正的atomic commits,增强了鲁棒性。同时,其提供了对文件的追踪,可以记录下文件在历史上的的改名,移动操作。使用SVN,可以轻松实现http下的版本控制,非常方便的进行branching,以及原生支持二进制文件的版本管理。

但SVN也存在着一些不足:SVN提出了一种tagging的模型(一个tag实际就是一个branch)进行版本控制,对文件系统以快照的形式保存,导致了虽然其本身的branching过程比较简单,但在客户端操作较为耗时。并且,SVN并不记录历史信息,无法进行diff操作。

image.png

和CVS一样,SVN也使用集中式存储库模型。远程用户必须依赖网络来实现连接才能将其更改提交到中央存储库。

Subversion引入了原子提交的功能,确保提交将完全成功,或者在发生问题时被完全放弃。在CVS中,如果提交操作中途失败(例如,由于网络中断),则存储库可能损坏和不一致的状态。

Subversion中的提交或修订可以包含多个文件和目录。这样可以允许用户以项目为单位的跟踪相关更改集,而无需分别跟踪每个文件的更改。

黄金时代:集中式版本管理

接下来,便到了GIT出场的时候。Git的出现或许也是巧合,这源于BitMover停止提供免费的版本控***务。Linux Kernel的开发起初都是在BitMover公司的一套专利系统,BitKeeper,进行的,同时BitKeeper还支持着几个其他的开源软件的开发。由于合作一直进行,社区中的程序员起初并没有想过要自己开发一个版本控制软件。但2005年BitKeeper终止了与开源社区的合作协议,并支付了赔偿金(关于这部分还有很多有趣的争论,感兴趣的可以去看看BitKeeper and Linux: The end of the road?)。于是Linus等人根据在BitKeeper上的使用经验,开始着手开发自己的版本控制系统,

Git的最重要的功能在于其分布式的设计,这也是第一个分布式的版本控制软件,提供了客户端轻量级的维护。GIt的开发于2005年4月开始, 主要由Junio Hamano负责,于12月发布了1.0版本。这里是Git的开发仓库。目前,GithubBitBucket都提供了免费的Git服务。

与以往不同,Git强调了非线性的开发,具体体现在其方便的branch和merge功能。同时,使用Git进行版本控制速度快,尤其表现在大型软件的开发方面。

Git的缺点表现在其学习曲线,要想完全掌握Git的特性并不容易。另一方面,Git并不会记录空目录,这也是一些人抱怨的原因。

几乎与此同一时间的,Mercurial也是一个很成功的版本控制软件,拥有着与Git相同的目的。目前BitBucket提供了免费的Mercurial系统。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容