久违的阳光暂时将初冬的寒意挡在身后,萧俊逸如往常一样来到知春大厦,刚刚走出电梯,就听到公司里嘈杂的争吵声,顿时皱起了眉头。
“里面怎么回事?”萧俊逸向坐在前台的向玲问道。
“萧总,我也不太清楚,好像是技术部那边,说是硬盘坏了。”向玲含含糊糊的回答。
“硬盘坏了?一块硬盘又不是什么大不了的事,不至于吵起来啊。难道是服务器的?”萧俊逸一边往里走一边在琢磨。
技术部的办公室里,大家看到萧俊逸进来,顿时间就安静了下来,大家都耷拉着脑袋,像是在等待审判的犯人。
“说说吧,怎么回事?”萧俊逸问道。
果然就如萧俊逸猜测的那样,服务器的硬盘挂了。按理说不应该啊,周五下班前还好好的。
萧俊逸给物业打了个电话才确定大厦的电路昨天出了点问题挑过几次闸。可能就是因为这个原因导致的。
其实在接手公司的时候萧俊逸就发现了服务器没有配ups(不间断电源),只是习惯了前世稳定的电网服务,也没在意,加上后来忙了起来把这个事给忘了。没想到今天吃了个大亏。
萧俊逸拆下硬盘,找了一家数据恢复公司,还好盘片没有损坏,很顺利的导出了数据。
问题算是解决了,虚惊一场。但是萧俊逸心里却在感慨,要是有git就好了。
所谓git,就是版本控制系统的一种。
而版本控制系统,它能管理程序员对文件、目录或工程等内容的修改,方便查看历次修改的记录,同时还可以恢复到之前的任一次修改的版本,后来又实现了跨区域的多人协同开发。
整个版本控制系统的发展历史可以分为本地版本控制系统、集中式版本控制系统以及分布式版本控制系统三个阶段。
很早的时候,程序员习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。尽管这么做很简单,但是特别容易犯错。有时候会弄混目录,一不小心会改错文件或者覆盖掉意想之外的文件。
为了解决这个问题,有人就开发了本地版本控制系统,采用简单的数据库来记录文件的历次更新差异,分别找回某次修改之前的文件。
随着项目越来越大,已经不是一个人就能完成的,那么如何让多个开发者在一个项目上实现协同工作?
于是,集中式版本控制系统应运而生。其中最为出名的就是2000年诞生的svn,直到萧俊逸重生前还有无数的人和公司在使用这套系统。
而此时主流的还是迪克·格伦在1986年开发的cvs系统。
这种集中式版本控制系统将所有历史数据都保存在一个单一的服务器里,开发人员通过客户端连到这台服务器,取出最新的文件或者提交更新。
萧俊逸给自己公司部署的也是这个cvs系统,只不过包括邱茂学在内的国内绝大多数程序员普遍习惯的还是单打独斗,没有什么团队开发的经验,对于版本控制系统还没有完全适应,也没有做好备份的工作。
至于萧俊逸提到的git,则属于第三代,也就是分布式版本控制系统。在这类系统中,客户端并不只提取最新版本的文件快照,而是把代码完整地镜像下来,包括完整的历史记录。
这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。
自从2005年git诞生以后,凭借其功能完善,高度易用的特点,迅速成为最流行的分布式版本控制系统。
到了2008年,为了给开源项目提供更好的存储服务,便把git搬到了互联网上,成立了github网站,无数开源项目都迁移到了github上,包括jquery、php、ruby等等。
尽管后来像阿里和腾讯这些大厂都推出了自己的基于git的代码托管平台,只不过众多的程序员早已经习惯了github。
萧俊逸在想,是不是可以把这个github提前搞出来,也算是不枉重生一回,为华夏的程序员们做点事。
说起git的诞生,这里还有一段被全球程序员津津乐道的故事。
被称为linux之父的林纳斯早些年的时候还真有点“缺心眼儿”,当时市面上不是没有版本控制系统,只不过他“老人家”就是嫌麻烦不喜欢用,还在采用复制粘贴这样的手工方式管理linux的内核源码。
这时有一个收费的分布式版本控制软件bitkeeper,老板拉里和他也算老友了,最终说服了林纳斯使用他们的系统来管理linux的内核源码,并且有条件的免费给他使用。
于是之后的三年里,linux内核开发团队一直使用bitkeeper来管理linux源码。
虽说bitkeeper在当时算是个好用趁手的工具,但是因为bitkeeper不是自由软件,而是个商业软件,这在linux社区这种开放氛围浓厚的地方属于“大逆不道”的玩意儿。
于是有一个叫安德鲁·垂鸠的小伙伴企图破解这个软件,这也导致了bitkeeper结束了和林纳斯的合作,在大家都会以为林纳斯会向bitkeeper低头的时候,让人意想不到的事情发生了,林纳斯停下了十几年从未中断的linux内核维护工作,闭关撸代码,只用了半个来月的时间就开发出来了git。
从此git正式走向舞台,至于bitkeeper就比较惨了,市场急剧萎缩,直到2016年宣布开源了也鲜有人问津。
而这个时候git几乎成了分布式版本控制软件的代名词,差不多全世界所有的开发者在使用git。
萧俊逸虽然没有林纳斯那样的水平,但是把一个使用了十几年的程序抄出来还是没有问题的。
只是自己没有办法像林纳斯那样完全抛开其它工作,心无旁骛的专心开发,还是得需要找一些帮手,公司里的人现在都有各自的事情在忙,根本无暇分身。
萧俊逸想到了周枫、王小川他们,虽然那次分享会之后,都还没有见过面,但是没少在邮件里联系,对于他们几个人目前的能力也有了一些了解,让他们加入进来,协助自己,对他们来说也是一次不错的锻炼。
只不过就算系统开发出来了,推广却是个问题,前世的时候市面上那么多分布式的版本控制系统,为什么单单就git火起来了,除开系统本身的优点之外,林纳斯的号召力起到的作用更大,所以最好还是能让林纳斯加入进来,而马克·埃文似乎可以做这个中间人。
当然这些是下一步的事情,首要的还是得把git开发出来,至于github目前还没有必要,当前的互联网环境还支撑不起这样的网站。