git能火是人性的光輝

1000copy發表於2016-11-21

git現在火的一塌糊塗。當年的svn風光不再。如下是我在google trends上查到結果,可以作為佐證:

enter image description here

然而,總有人要問一個--為什麼!!!

我之前看到不少這樣那樣的說辭,然而我覺得 - 說git好的,都沒有說到點子上 - 說git不好的,可能真是不懂linus創造git的上下文。要是拿企業內開發的上下文來看git,可是看不出什麼好的。

我曾經暫時忘掉SVN,為了Git而學習Git,以Linus的思維替代我的思維。百般思考後,在觀看了Linus在google的演講後,我覺得我找到了Git的脈搏。

版本管理工具的本質價值之一是多人的協作。Git的成功是因為認識到了人性。一點也不誇張,讓我娓娓道來。

  1. 自洽的、最少依賴的個人工作得到支援

1000多人的Linux開發團隊是分佈在世界各地的,使用git也就不必依賴中心伺服器、不必需要很少的網路。就在自己的電腦上就有完整的倉庫,可以做任何版本管理,除了分享程式碼。SVN顯然是不合適的,因為單點故障大家甚至無法提交,更加無法開分支,這是無法忍受的。

  1. 剔除害群之馬很簡單

如果Linus經過觀察,發現有些程式設計師特別容易出漏子,那麼封殺的辦法就是不必拉取即可。實際上Linus就是這樣幹過。如果是SVN,就變成了撤銷惹麻煩的開發者的賬號或者限定他的訪問範圍,並且從倉庫中移除麻煩的程式碼提交。就是說,封殺的方法在git而言,是不做某事即可,SVN是做一系列事情才可以。一正一反,大家可以體會一下。Linus喜歡前者,並且得心應手。這樣的工作流程就避開了很多“政治”問題,讓他的整合程式碼過程變得主動。

  1. 可以使用信任網路

Linux太大了,不可能完全看完補丁程式碼的方式來識別信任,這個Linus曾經幹過,最後的結果當然是放棄。如果發現有些程式設計師特別優秀,他只要選擇拉取他們的實現。這些程式設計師也只是拉取他們信任的程式設計師的實現。這樣的信任網路是可以層次化的,因此對應於1000多人的開發者來說,這樣做確實可以通過分層的信任網路達成大規模的團隊協作。如果是SVN,我不知道如何做可以更好

4.輕量的分支開銷鼓勵大量被使用。對於這樣的團隊,為了敏捷的迭代,如果有想法就分支(這樣的開發隔離想法是很有價值的),那麼在svn上分支是海量的並且全域性的大家互相影響,因此是要命的。而對於Git總數當然是海量,但是每個人的分支都在自己的倉庫內,不會影響到他人。且分支無需連線伺服器,因此是飛速的。

所以,對於Linux團隊來說,Git是必須的。特別是它的分散式,可以幫助建立信任網路,減少政治問題。所以說它的設計首先是關於人的,關於最佳的工作流程的。而Git技術則是這些思想的完美載體。

Linus不僅僅建立了Linux,也實際上管理著一個巨大的團隊,做法就是用一套工具提供信任網路和少政治的工作流程,從而可以不管。說Linus是此團隊的“仁君”,並非繆贊。想想混亂的現實世界,我確實對這個高手團隊的管理方法感到敬佩。

這解釋了開原始碼專案使用git的熱潮。它符合人性的光輝。

SVN當然可以繼續用,在企業內部其實也有它的簡單和方便之處。然而,這些年企業內的開發流程乏善可陳,開源界紅紅火火,那些整日貧乏的面孔,不去學習開源界的性感怎麼辦。

所以,git就這麼火了唄。

對了,利益相關,我寫了一本git小書的。

相關文章