久違的陽光暫時將初冬的寒意擋在身後,蕭俊逸如往常一樣來到知春大廈,剛剛走出電梯,就聽到公司裡嘈雜的爭吵聲,頓時皺起了眉頭。
“裡面怎麽回事?”蕭俊逸向坐在前台的向玲問道。
“蕭總,我也不太清楚,好像是技術部那邊,說是硬盤壞了。”向玲含含糊糊的回答。
“硬盤壞了?一塊硬盤又不是什麽大不了的事,不至於吵起來啊。難道是服務器的?”蕭俊逸一邊往裡走一邊在琢磨。
技術部的辦公室裡,大家看到蕭俊逸進來,頓時間就安靜了下來,大家都耷拉著腦袋,像是在等待審判的犯人。
“說說吧,怎麽回事?”蕭俊逸問道。
果然就如蕭俊逸猜測的那樣,服務器的硬盤掛了。按理說不應該啊,周五下班前還好好的。
蕭俊逸給物業打了個電話才確定大廈的電路昨天出了點問題挑過幾次閘。可能就是因為這個原因導致的。
其實在接手公司的時候蕭俊逸就發現了服務器沒有配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目前還沒有必要,當前的互聯網環境還支撐不起這樣的網站。