Git 10 周年訪談 Linus 講述背後故事

2021-07-09 21:12:54 字數 2762 閱讀 1297



你為什麼要開發 git?

你怎麼做到的?整個週末都在熬夜寫這個,還是只用了常規的時間?

t:呵呵,其實可以在 git 的源**倉庫中看它是如何成型的。除了第一天的工作,因為我花了一天的時間進入「自舉(self-hosting)」。之後我就能使用 git 向 git 自己提交**了,雖然第一天所有的東西都不是明確的,但是大體上也都在那裡了。雖然這些工作大多是在白天完成的,但也有時候工作到了深夜,甚至有兩天到了凌晨兩點。最有趣的部分是如何將它快速成型。git 樹中的第一次提交沒有太多**,但是它的基本功能已經實現了——向它自己提交**。這部分寫**並不難,難的是如何組織資料。

所以我想強調的是,雖然它在短短十天內就完成了(我第一次使用 git 向核心提交**的時間),但是這並不是某種「馬拉松」式的開發。事實上,我早期的開發成本很低,這取決於基本的思路正確。在這個專案開始之前,我想了很久,我總結了很多別人犯過的錯誤,然後極力避免了。

git 達到了你的期望嗎?你估計一下它現在工作得如何?它還有什麼不足嗎?

我對 git 很滿意。它工作得相當出色,滿足了我的所有需求。有趣的是,它還接手了很多其他專案,它成長地相當迅速。在切換版本控制系統中有很多惰性,看看 cvs 和 rcs 這些堅持了這麼久就知道了。不過等時機到了,git 早晚都會接管過來。

你覺得為什麼它會被如此廣泛地接受?

我提過以前我為什麼痛恨 scm,我相信很多人也為相同的問題煩惱過。很多專案要改一兩個小地方就會使人抓狂。在 git 之前,沒有東西來真正解決這個問題。人們不清楚分布式的重要性, 可能還會與此抗爭。一旦他們明白它支援的方便可靠的備份,並允許做私人的測試倉庫,而不必擔心有無**儲存倉庫的許可權的話,他們就永遠不會放棄 git 了。

git 會永遠流行嗎?還是你預見在將來的十年會有另一種版本控制系統?作者會是你嗎?

我不會是唯一乙個作者,將來我們也可能使用另一種工具,但是我敢保證,它一定和 git 非常像(「git-like」)。我不是說 git 的什麼都是對的,但它的基本路線是對的,之前其他 scm 未曾嘗試過。

沒有假謙虛 :)

為什麼 git 能在 linux 上工作地這麼好呢?

很顯然,git 最初是為我們的工作流程設計的,所以這是它的一部分。雖然我重複「分布式」這個詞很多次了,但這不為過。它被設計為足以高效地應付像 linux 一樣的大專案,它也用於完成 git 之前人們覺得「艱難」的事情——因為這些事我每天都要做。

舉個例子吧:在大多數的 scm 中,「merging」 操作都被認為是痛苦而且艱難的事情。你需要計畫好你的合併操作,因為這涉及到很多繁瑣的細節。這我不能接受,因為我每天要做幾十次合併,即使這樣,最大的麻煩還不是合併本身,而是測試結果。「git」的合併只需要幾秒鐘,寫合併注釋反而會花去我更多的時間。

所以 git 基本上是為了滿足我的需求來寫的。

人們說 git 是為聰明人設計的,即使 andrew morton 也說 「git的明確設計讓你感覺你比你想象中的要蠢。」你對此的回應是什麼呢?

我覺得曾經可能是這樣的,但現在不再是了。人們這麼想可能會有很多原因,但只有乙個站得住腳,很簡單:「在 git 中完成一件事你有太多的方法」。

git 給人複雜的印象有一些歷史原因。其中乙個是,它很早之前確實是複雜的。一開始需要使用 git 來做核心方面的工作的時候,人們要配置一些指令碼。那時候的工作主要集中於讓核心模組工作,花在易用性方面的精力很少。所以很顯然,git 因其複雜性著稱,但那大約還是頭一年的事了。

人們認為 git 難的原因是 git 的與眾不同。很多人用過十幾二十年的 cvs,但 git 並不是 cvs,一點都不像。概念不同,命令也不同。git 從來沒有考慮過要像 cvs,甚至大行反道。所以如果你使用 cvs 之類的系統很長時間,就會覺得 git 複雜,而且它的差異毫無必要。人們會對版本號碼感到奇怪。為什麼 git 的版本不像 cvs 的「1.3.1」這種遞增式的數字?為什麼會是恐怖的四十位 hex 碼?

但 git 的不同並不是「毫無必要的」。只是這點讓人們覺得它太複雜了,因為它來自乙個不同的背景。「cvs」的背景過時了。現在很多程式設計師從沒用過 cvs,如果他們學 cvs,可能覺得 cvs 的方式太詭異了,因為他們最先學的 git。

如果沒有 git,linux 核心會發展的像現在這樣好嗎?為什麼?

「沒有 git」,好吧,但是一定會有別人寫出來個像 git 的工具,乙個分布式版本控制系統。毫無疑問,我們需要「git」這樣的東西。

你怎麼看待 github ?

github 是非常棒的**託管服務,對此我沒有任何反對。我的抱怨主要是因為它作為乙個開發平台——提交**,pull request,跟蹤問題等等——不夠好。不適用於核心之類的專案。限制太多了。

部分原因是,因為核心發展的原因,部分是因為 github 的介面很鼓勵壞習慣。在 github 的提交有不好的提交資訊等等,就是因為介面的問題。他們確實做了改善,可能現在好點了,可是永遠不會適用於 linux 核心這樣的專案。

你見過的用 git/github 做的最有趣的事情是什麼?

看到建立乙個新專案能如此簡單,我很開心。以前搞**託管很痛苦的,但現在用 git/github ,建立乙個小專案就小菜一碟了。你的專案是什麼並不重要,重要的是你可以做得到。

你現在有什麼精彩的專案嗎?有什麼將推動軟體發展軟體嗎?

暫時沒有,如果有的話,我會告訴你。

**:

路虎65周年訪談錄

路虎自1948年誕生之日起始終致力於打造能夠卓越應對各種路況的全地形汽車。路虎攬勝可以說是豪華suv的始祖,從1970年路虎推出第一代攬勝至今的30多年中,它始終是suv中最高端車型的代表,也一直是四輪驅動車領域的最高標準。無論是越野攀登還是去一些正式場合,攬勝同樣勝任有餘。經過六十餘年的發展歷程,...

敏捷現狀10周年調查

敏捷現狀第10屆調查 已於2015年10月2號對外開放。本次調查 了全球範圍內敏捷實施的現狀。u0026 xd n u0026 xd n u0026 xd n 敏捷現狀 報告給出了敏捷發展趨勢,最佳實踐和成功向敏捷轉型獲得的經驗教訓等方面的洞見,並且這些都是軟體人才的真知灼見。該報告已然成為全球範圍...

敏捷現狀10周年調查

敏捷現狀第10屆調查 已於2015年10月2號對外開放。本次調查 了全球範圍內敏捷實施的現狀。敏捷現狀 報告給出了敏捷發展趨勢,最佳實踐和成功向敏捷轉型獲得的經驗教訓等方面的洞見,並且這些都是軟體人才的真知灼見。該報告已然成為全球範圍內規模最大,跨時最長,最被廣泛引用的敏捷調查。versionone...