0 1
天才程序員
1993年,開發(fā)著名軟件Cygwin的公司Cygnus Solutions招募了一名天才程序員吉姆·金登 (Jim Kingdon)。
但是吉姆并不想搬到Cygnus所在硅谷,他想住在弗吉尼亞州一個(gè)鄉(xiāng)村的公社(commune )里。
Cygnus公司很重視人才,他們專門為吉姆·金登一個(gè)人拉了一條幀中繼線(這在當(dāng)時(shí)價(jià)格可不低),讓他可以遠(yuǎn)程工作。
問題是Cygnus使用CVS來管理源代碼,CVS是荷蘭阿姆斯特丹自由大學(xué)講師Dick Grune在80年代開發(fā)的一個(gè)程序,當(dāng)時(shí)只能在單機(jī)使用。
(Dick Grune)
用戶需要從代碼倉庫中checkout代碼副本,存放在自己的home目錄,修改后commit回代碼倉庫。
所以住在鄉(xiāng)村的吉姆·金登雖然有了網(wǎng)絡(luò),但是還無法遠(yuǎn)程登錄CVS,在家工作。
這根本難不住吉姆這樣的天才黑客:讓CVS支持網(wǎng)絡(luò)不就行了嗎?
說干就干,他拿到CVS的源碼,研究了一番,把CVS拆分成了客戶端和服務(wù)器兩個(gè)部分。
1993年的網(wǎng)絡(luò)非常緩慢,吉姆·金登一不做二不休,干脆設(shè)計(jì)了一個(gè)全新的、高效的通信協(xié)議,極大地減少了網(wǎng)絡(luò)往返次數(shù),降低了延遲。
服務(wù)器暴露在互聯(lián)網(wǎng)上,必然要考慮安全問題,Jim Kindon于是又增加了Kerberos 認(rèn)證。
一套組合拳讓CVS脫胎換骨,成了當(dāng)時(shí)非常先進(jìn)的軟件,大大超越了同時(shí)代的許多工具。
Cygnus 是一家扎根于黑客文化的公司,也很樂意看到吉姆·金登對CVS做出這樣的修改。
現(xiàn)在,吉姆·金登可以愉快地遠(yuǎn)程工作了,從灣區(qū)的 CVS 存儲庫中取出代碼,將其checkout弗吉尼亞自己的計(jì)算機(jī)上,隨心所欲地進(jìn)行開發(fā),并在完成后將其commit回去。
0 2
1990s:CVS黃金時(shí)代
照理說,開發(fā)了這么一個(gè)革命性的軟件,又遇上了開源的浪潮,全球的開發(fā)者都是潛在的用戶,吉姆·金登完全可以成立一個(gè)公司,提供技術(shù)支持和咨詢服務(wù),弄不好就走上人生巔峰了。
但吉姆·金登魔改CVS,只是為了方便自己工作,只想在公司內(nèi)部使用,根本沒有想到對外公開!
不僅如此,在解決了自己的問題以后,他就把注意力轉(zhuǎn)到了別的方面,從黑客界消失了。
這時(shí)候第二個(gè)吉姆出現(xiàn)了,吉姆·布蘭迪(Jim Blandy)是吉姆·金登的大學(xué)室友,他和朋友進(jìn)行遠(yuǎn)程協(xié)作時(shí)也遇到了類似的問題,只能通過電子郵件來發(fā)代碼補(bǔ)丁,極其麻煩。
這時(shí)候他聽說了被魔改的網(wǎng)絡(luò)版CVS,大喜過望,馬上給吉姆·金登寫信,希望能使用魔改版。
吉姆·金登當(dāng)然同意分享代碼,但有一個(gè)條件:不能問他問題!
因?yàn)樗麑S護(hù)開源軟件的各種瑣事沒有興趣,也不想處理用戶的支持請求。
吉姆·布蘭迪就想,這么有用的軟件,沒人做技術(shù)支持,多可惜??!
看到商機(jī)的吉姆和朋友干脆成立了一家叫做Cyclic Software的公司,專門提供網(wǎng)絡(luò)版CVS(被大家稱為Cyclic CVS)的技術(shù)支持和咨詢服務(wù)。
開源、免費(fèi)、跨平臺的Cyclic CVS徹底改變了開源協(xié)作方式,GNU項(xiàng)目、FreeBSD、Apache HTTP Server、KDE、GNOME、Mozilla、Perl、Python等著名開源項(xiàng)目紛紛采用CVS保存自己的代碼庫。
當(dāng)時(shí)最大的開源平臺SourceForge也在用CVS,CVS成了開源世界的標(biāo)準(zhǔn)。
0 3
2000s:SVN成功接棒
雖然Cyclic CVS風(fēng)靡全球,解決了開源世界的協(xié)作的難題,但是它最初的設(shè)計(jì)缺陷也讓用戶抱怨連連:
1.缺乏原子提交
在 CVS 中,每個(gè)文件的更改是獨(dú)立提交的,多個(gè)文件的變更沒有任何關(guān)聯(lián)。
A 和 B 文件屬于同一次修改,但由于并非原子提交,可能 A 提交成功,而 B 失敗,導(dǎo)致代碼庫處于不完整狀態(tài)。
2.update 操作時(shí)非常低效
CVS 并不存儲整個(gè)項(xiàng)目的完整快照,而是對每個(gè)文件單獨(dú)管理版本,如果代碼庫有 10,000 個(gè)文件,但只有 3 個(gè)文件被修改,CVS 仍然需要通過網(wǎng)絡(luò)檢查全部 10,000 個(gè)文件,造成巨大的性能浪費(fèi)。
3.創(chuàng)建分支非常困難。
CVS 創(chuàng)建分支時(shí),實(shí)際上是為每個(gè)文件的歷史記錄打上一個(gè)分支標(biāo)記,當(dāng)代碼庫包含數(shù)十萬文件,非常耗時(shí)。
在整個(gè)90年代,CVS沒有好的免費(fèi)開源替代品,大家還是不得不使用。
每天都在使用CVS的吉姆·布蘭迪一直在構(gòu)思,怎么重新設(shè)計(jì)一下CVS,徹底解決這些問題。
新系統(tǒng)的名稱他都想好了,叫Subversion。
正好,一個(gè)叫做CollabNet的公司也受不了CVS了,掏錢資助吉姆·布蘭迪等5個(gè)人把Subversion給開發(fā)出來。
當(dāng)時(shí)吉姆已經(jīng)在紅帽公司工作,紅帽也非常慷慨:你去吧,什么時(shí)候把Subversion開發(fā)出來再回來!
開發(fā)工作于2000年2月啟動(dòng),5人目標(biāo)明確,配合默契,按模塊分工,每個(gè)人專注于自己的部分,吉姆主要負(fù)責(zé) 服務(wù)器端,而其他人分別負(fù)責(zé)命令行工具、工作目錄庫等部分。
一開始他們還使用CVS來管理Subversion的源碼,一年以后,Subversion的主要功能已經(jīng)完成,可以開始“吃自己的狗糧”,用Subversion來管理Subversion。
Subversion徹底解決了CVS的問題,實(shí)現(xiàn)了原子提交,迅速地創(chuàng)建分支等功能。
大家看到更好用的Subversion,紛紛拋棄CVS,上了Subversion的大船。
SubVersion成為了21世紀(jì)頭10年最主流的版本控制系統(tǒng)。
0 4
2010s:Git稱王
就在Subversion如日中天的時(shí)候,2005年,Linux社區(qū)發(fā)生了一件大事!
由于有人對BitKeeper做逆向工程,BitKeeper停止向Linux社區(qū)提供免費(fèi)版本。
Linus只好暫停了Linux的開發(fā),卷起袖子自己開發(fā)了一個(gè)版本管理軟件:Git。
和Subversion相比,BitKeeper和Git代表了另外一個(gè)重要的方向:分布式版本管理。
每個(gè)人都有一個(gè)本地的代碼倉庫,可以在本地隨意折騰,即使沒有網(wǎng)絡(luò)也具備完整的版本管理的能力。本地開發(fā)結(jié)束后后向服務(wù)器端的代碼倉庫提交就行。
這種方式更加符合開源軟件的全球化協(xié)作,所以Git開始走出Linux開發(fā)社區(qū),慢慢地蠶食Subversion的市場。
2008年,GitHub成立,不但給Git 用戶提供了便捷的代碼托管服務(wù)和豐富的協(xié)作功能(Pull Request,Issues),還讓程序員可以關(guān)注自己感興趣的用戶和項(xiàng)目,成為程序員社交的重要平臺。
短短的兩三年時(shí)間內(nèi),GitHub吸引了Ruby on Rails,jQuery,Node.js,Bootstrap、Redis、Python、Puppet、Chef、Elasticsearch等一大批著名項(xiàng)目入駐。
到了2015年,Git 成為程序員最常用的版本控制工具,占據(jù)絕對主導(dǎo)地位。
SVN 的市場份額逐漸縮小,成為少數(shù)遺留項(xiàng)目/特殊項(xiàng)目的選擇。
就連Subversion的作者吉姆也開始奉勸別人:別用使用SVN了,它已經(jīng)過時(shí)了......
從CVS到SVN再到Git,20年間代碼版本管理工具迭代了三次。
如今Git是全球霸主,被大家使用得多了,它的痛點(diǎn)問題也在慢慢暴露。
顛覆它的工具可能正在醞釀之中,也許某一天,Linus也會說:別用Git了,它已經(jīng)過時(shí)了......
全文完,覺得不錯(cuò)的話點(diǎn)個(gè)贊或者在看吧!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.