不看好 git ,也看不懂為什么那么多人去使用 git
上來就亮明觀點,符合我的性格。呵呵呵。
為什么不看好 git 呢?
首先,我們來看看 git 產(chǎn)生的背景。
git 是 Linus 開發(fā)的,最初的目的,是為了管理 Linux 系統(tǒng)的源代碼。這是一個分層集中式版本控制系統(tǒng),并非網(wǎng)上人云亦云的分布式版本控制系統(tǒng)。以下作詳細說明。
Linux 的開發(fā)習慣,與通常軟件公司的開發(fā)習慣不同:
Linus,或者加上其它少量關(guān)鍵人員,負責 Linux 核心代碼的維護,他們可能自己參與開發(fā),也可能接受別人提供的軟件包(軟件功能增強、改進、或bug修復(fù)),合并到已有的代碼庫里。在接受其他人提供的軟件包時,期望對方已進行完整測試、代碼沒有明顯的問題、代碼規(guī)范也符合相應(yīng)的規(guī)定,不然,這幾個關(guān)鍵人員,有權(quán)拒絕此軟件包加入到Linux 核心代碼。并且,同一個功能,可能有多個貢獻方來提交軟件包,這幾個關(guān)鍵人員可選擇其中之一(多個貢獻方提交的軟件包里選一個),加入Linux 核心代碼。
單個軟件包本身可能也比較復(fù)雜,由另一批少量關(guān)鍵人員、加上大量的開發(fā)人員進行開發(fā)。他們也按上述習慣,在接受其他組織/人提供的更小級別軟件包時,期望對方已進行完整測試、代碼沒有明顯的問題、代碼規(guī)范也符合相應(yīng)的規(guī)定,不然,這幾個關(guān)鍵人員,有權(quán)拒絕此更小級別軟件包加入到此軟件包。并且,同一個功能,可能有多個貢獻方來提交更小級別軟件包,這幾個關(guān)鍵人員可選擇其中之一(多個貢獻方提交的更小級別軟件包里選一個),加入此軟件包。
當然,有些情況下,軟件包的層次會更多。
以上就是分層集中式的開發(fā)模式。
問題在于,大多數(shù)公司,或者臨時/長期組建的軟件項目組,都不是按 Linux 核心組的開發(fā)習慣,展開工作的。
對于一般公司來說,任何員工的每個小時的工作,都是人力成本,換句俗話來說,都是錢、是費用。為避免因單個程序員電腦硬盤損壞造成的代碼丟失,造成公司的費用損失,很多公司要求,每個程序員,每天下班前,都需要 check-in 代碼到代碼庫,那些編譯不能通過的部分代碼,注釋起來,仍要check-in 代碼到代碼庫。
極少有公司去要求:那個誰,你負責的權(quán)限模塊,全部開發(fā)、測試完成后,再放到公司級版本庫;那個誰,你負責的訂單模塊,全部開發(fā)、測試完成后,再放到公司級版本庫...
因此,Linux 核心代碼的管理模式,不具有通用性。
基于 Linux 核心代碼的管理模式而開發(fā)出來的源代碼版本管理工具 git ,也不具有通用性。不適合于大多數(shù)公司。
請注意,"分布式"、或"分層集中式"這些詞,是時髦的詞匯,但絕大部分場合,不需要。
在無需"分布式"的情況下,硬要套用"分布式"的做事方式,只會帶來更多的不方便、付出更多的人力成本。
EJB 就是一個很好例子。
單從概念、技術(shù)角度,相比之前/同期的同類軟件技術(shù)/產(chǎn)品/架構(gòu), EJB 均是優(yōu)秀的。被廣泛濫用之后,大家都發(fā)現(xiàn),這玩意兒太難用了,無論是開發(fā)論壇、員工考勤、企業(yè)信息管理、電子商務(wù),還是其他的軟件系統(tǒng)/軟件工具,絕大多數(shù)情況下,EJB 都只會帶來技術(shù)難度及增加開發(fā)工作量。
這還是因為,“分布式”的技術(shù),只適合用于“分布式”的場景下。不具有通用性。
知乎網(wǎng)上,也有很多對比討論(git vs SVN)。
最明顯的一點差別,在于 git 的日常兩次提交習慣(第一次提交到本地個人電腦版本庫、第二次提交到公司集中版本庫),相比 SVN 的一次提交習慣,需要更多的培訓、學習、適應(yīng)時間。
且日常操作,更顯麻煩(操作步驟多一倍)。
當然了,對于單個員工來說,學了不合適的時髦技術(shù),可以增強找工作的個人競爭力;對于公司、團隊來說,使用了不合適的時髦技術(shù),增大了總體成本、變相降低了公司的競爭力。
值得不值得用,就看站在哪個角度來判斷了。
================================================================================================
========================轉(zhuǎn)發(fā)請注明來源:http://www.rzrgm.cn/jacklondon/ ===========================
================================================================================================

浙公網(wǎng)安備 33010602011771號