Linux創始人Linus Torvalds訪談,Git的十年之旅

n6xb 9年前發布 | 10K 次閱讀 Git

十年前的這周,Linux kernel社區面臨著艱巨的挑戰。十年后的今天,Git用于成千上萬個項目。在這十周年之際,Linux創始人Linus Torvalds為我們分享了Git幕后的故事,并且告訴我們這個工程隊軟件開發的影響。你會發現他在這個故事背后的評論。我們跟隨Q&A追尋 Git的軌跡。

Linux創始人Linus Torvalds訪談,Git的十年之旅

為什么要創建Git?

Torvalds:我真的從來沒有想過要做資源控制管理,并覺得它在計算機世界里擁有最少的樂趣(可能是除了數 據庫之外),而且我討厭所有的SCM。但是隨著BitKeeper的出現,我的想法發生了改變。BK (BitKeeper)大多數都是正確的,但有本地副本的存儲庫與分布式合并是一個大問題。分布式源碼管理的一個主要問題是源碼管理的分離——誰才可以提 交改變。BK讓你可以避免這個問題,方法就是給每個人自己的源代碼存儲庫。但是BK有自己的問題,有幾個技術選擇導致了問題(重命名是痛苦的),而最大的 缺陷是它不是開源的事實。有很多人不想使用它,所以當我們最終讓幾個核心維護人員使用BK時,它對開源項目是免費的,無處不在,所以它幫助了內核開發,即 便仍有痛點。

當Tridge(Andrew Tridgell)開始對BK協議實施逆向工程時,這是違反BK的使用規則的。我花了幾周的時間(幾個月?感覺是這樣)試圖在Tridge和Larry McVoy之間調解,但是最終它顯然無法工作了。所以在某種程度上我確定了我無法再繼續使用BK,但是我真的不想再回到那個舊的BK的日子。同時,雖然有 些SCM試圖獲得整個分布式事情,遺憾的是離目標是遙遠的。最終我選擇自己去寫。

你是怎么著手的?時間上是整周都在熬夜編寫還是只在常規時間里?

Torvalds:你可以實際的在Git源代碼存儲庫中去看看它是如何成型的。它花費我大約一天的時間來讓其 “自托管”,這樣我就可以使用Git本身來將東西整合到Git中。白天的工作是主要的,但也有一些事在半夜或凌晨兩點。最有趣的部分是它如何成型的,第一 次提交到Git樹種的東西是沒有太多代碼的,但是它已經做了基礎——足以支撐它。編碼的訣竅并不是真的那么多,但是需要思考數據如何去組織。

所以我想強調的是當它真的只在大約十天左右的時間里出來,這也并不表示它像某種瘋狂的編碼。早期代碼的實際數量是非常小的,它取決于基礎的觀念。我在整個項目開始之前考慮了一段時間,包括其他人已經遇到過的問題,我看到我想要避免去做什么。

它辜負了你的期望了嗎?你如何評價它如今的工作?對它有哪些限制呢?

Torvalds:它工作的非常好,并且到目前為止仍滿足我所有的期望。不過在轉換源控制系統中有許多惰性。

為什么會認為其已被廣泛采用?

Torvalds:我想很多人也遇到過相同的問題,以致我恨SCM。雖然目前有很多試圖解決一兩個“小角落”的 項目,但是實在沒有哪個想Git,可以最終承擔大的問題。即使人們沒有意思到“分布式”部分有多重要(并且有很多人反對這個部分),然而一旦他們弄清楚它 允許簡單可靠的備份,并允許人們創建自己的測試庫,而不必擔心去寫訪問中心存儲庫的政綱,他們會離不開它。

Git會永遠持續下去嗎,或者你預見另一個版本控制系統會出現在另一個十年里?你會是其中的編寫者之一嗎?

Torvalds:我不會是編寫者之一。也許在未來十年里我們會看一些新的東西,不過我相信它會是類似Git的東西。它不是像Git那樣讓所有事物正確,而是以某種方式解決所有真正的基本問題(其他SCM不曾解決的)。

為什么Git可以很好的工作于Linux?

Torvalds:它顯然是被設計用于我們的工作流的,因此這是它的一部分。我已經提過跟多次整個“分布式”部分,但值得重復。不過它也被設計成高效、足夠用于一些大的項目,比如Linux,并且它也被設計用于做一些人們認為困難的事情。

舉個例子來說,在大多數SCM中,合并的概念被普遍認為是非常痛苦和困難的,你不得不計劃合并,因為處理量是巨大的。這是我不能接受的,而且最大的開銷不應該在合并上,而是在測試結果上。合并的“git”部分只需幾秒結合,它帶給我更多的時間。

所以Git基本上是以我的需求來設計和編寫的,并且它的表現也是這樣。

有人說Git是針對超級聰明的人,甚至連Andrew Morton都曾說Git是“清楚的被設計于讓你感覺不那么聰明的東西”。對此你的反應是?

Torvalds:有幾個原因讓人們有這樣的感覺,而我想只有一個,這個原因很簡單:“你做事情的方法可以有如此多”。

你可以使用Git做很多事情,而且很多關于你應該做什么的規則當中并沒有太多的技術限制,更多的是關于當于其他人一起工作時,什么是可以正常進行 的。所以Git是一個非常強大的工具集,不僅僅具有壓倒性的那種,它也意味著你可以經常以不同的方式做著相同或相似的事情,而且它們都可以工作。一般情況 下,學習Git的最好方法是先做非常基礎的東西,甚至就是看一些東西,直到你有熟悉、自信的基礎。

這里還有一些歷史原因導致Git被認為是復雜的。其中之一就是它是復雜的。很早一批為了工作于內核而使用Git的人們真的不得不為了讓一切運行起來 去學習非常粗暴的腳本集,所有的努力都用于核心技術工作,只有很少的精力用于簡化它,或使它顯而易見。所以Git的名譽是當之無愧的,要求你正確的指導你 在早期該做些什么,不過這主要適用于6個月或一年。

另一個讓人們認為Git困難的原因是Git有很大的不同。有些人使用諸如CVS等事物十年到二十年,Git不是CVS。概念是不同的,命令是不同的,從一開始Git就沒試圖去像CVS。

但是Git沒有不必要的不同,差異是必須的。只是這些讓有些人真的認為它比想象中更為復雜,因為來自不同的背景。“CVS背景”的事物已經遠去,現在可能有很多程序員從不使用CVS,并且會覺得CVS的方式非常混亂。為什么呢?因為他們先學的Git。

如果不用Git,你認為Linux內核開發速度能夠跟上目前的速度嗎?原因是?

Torvalds:當然可以,但是這也要求有人去寫某些Git等價物,一個可以像Git這般效率的分布式SCM,我們肯定需要些類似Git的事物。

你對GitHub最新的意見是什么?

Torvalds:GitHub是一個優秀的托管服務,我沒有任何需要針對它的地方。我要抱怨的是GitHub作為一個開發平臺,提交、請求、跟蹤問題等不能工作的很好。

請說一說在Git或GitHub上您最感興趣的用法?

Torvalds:很高興看到采用git可以很輕松的創建一個項目。以前的代碼托管是很難用,有了git和GitHub,創建一些小項目變得非常簡單。項目具體是做什么并不重要,重要的是你可以做到了。

您最近還有其它項目嗎?有其它可以在未來若干年主導軟件開發的項目嗎?

Torvalds:目前沒有,如果有的話我會告訴你。

英文原文點此查看

</div> 來自:http://geek.csdn.net/news/detail/30067

 本文由用戶 n6xb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!