SVN 和 Git 的一些誤解和真相

網(wǎng)上有很多關(guān)于 SVN 和 Git 的比較,但是大多數(shù)都是錯誤的,誤解的。

國內(nèi)外都沒有一個好的 SVN 倉庫,最近我自己做了一個出來,自認(rèn)為是市面最好的:SVNBucket?

但是引來了很多 Git 用戶的不屑、瞧不起、過時?

下面給大家列出來一些常見的誤解和真相,雖然這并不能說明哪個系統(tǒng)更好,但是可以幫助你更好的理解兩個系統(tǒng)之間的差異?

1.同樣的內(nèi)容,Git 倉庫遠(yuǎn)比 SVN 的小

錯誤:他們的存儲機(jī)制實(shí)際上是一樣的,所以相差非常小。例外的是二進(jìn)制文件,SVN 反而會遠(yuǎn)比 Git 占用的小,因?yàn)?SVN 對二進(jìn)制文件也能進(jìn)行差異存儲。

2.SVN 創(chuàng)建分支代價非常昂貴。

錯誤:很多人認(rèn)為 SVN 創(chuàng)建分支是復(fù)制整套代碼,代價很大。實(shí)際上從 1.0 版本開始,在 SVN 里創(chuàng)建分支的代價已經(jīng)非常非常小,你可以任意創(chuàng)建分支來修復(fù)一個小 BUG 或者開發(fā)新的功能

3.合并分支時需要指定版本號范圍

錯誤:這是一個過時的誤解,從 1.5 開始就不需要手工指定合并的版本號范圍了,更強(qiáng)大的是從 1.8 版本,還提供了自動合并的功能,大大方便了分支之間的代碼合并。

4.SVN 需要在每個目錄下都創(chuàng)建一個.svn 的目錄

錯誤:從 1.7 版本開始,已經(jīng)變?yōu)橹辉诟夸洿嬖?svn 目錄了。

5.沒有人再使用 SVN 了

錯誤:像 FreeBSD 和 LLVM 這種有名的開源項目都還在使用 SVN。實(shí)際上,有 47%的開源項目都在使用 SVN,然而使用 Git 的只有 38%。在公司層面就更多使用 SVN 的了,因?yàn)?SVN 是真正的標(biāo)準(zhǔn)企業(yè)級版本控制系統(tǒng)。

6.分布式的 Git 比集中式的 SVN 更優(yōu)越

錯誤:他們是平等的。分布式只是實(shí)現(xiàn)版本控制的另外一種方法。集中式和分布式兩種方法都有他們的正反兩面,分布式或許適合某些人,但是他也帶來了某些問題,比如:沒有權(quán)限控制;每個人都需要完全 clone 整個倉庫,沒法像 SVN 可以只 checkout 需要的子目錄;沒法鎖定文件等等問題

7.Git 很適合大項目,SVN 不行

錯誤:在 Git 里每個人都需要把整個倉庫都 clone 下來,2G 的倉庫或許沒什么問題,但是到達(dá)幾百 G 后呢?你需要 clone 幾百 G 的內(nèi)容,想想多可怕。有個經(jīng)典的解決方式就是把 Git 倉庫分為多個小的倉庫,但是這就導(dǎo)致了其他幾個問題:你需要管理多個倉庫;破壞了原有項目的完整性;沒法繼續(xù)跟他們一起使用分支;

8.Git 適合大團(tuán)隊

錯誤:某些工作流適合使用 Git,但是某些情況適合使用 SVN

9.在 SVN 里,合并總是個痛苦的事

錯誤:SVN 已經(jīng)能很好的處理合并和沖突,已經(jīng)成為他很重要的一個功能特性。只有在分支里重命名了文件夾或者文件時會有這種情況,這是個歷史遺留問題。

10.Git 有靈活強(qiáng)大的命令行操作

正確:Git 的設(shè)計初衷就是一套低級版本控制系統(tǒng),允許高級用戶通過命令玩一些黑科技,但是這并不安全,對初學(xué)者也不友好。Git 也因?yàn)闆]有良好的設(shè)計和混亂的命令受到了一些指責(zé):這導(dǎo)致加長了學(xué)習(xí)曲線和大大增加了公司和團(tuán)隊的成本,特別是大型團(tuán)隊以及團(tuán)隊成員水平不一的情況。比如美術(shù)、策劃、開發(fā)、這類人員,技術(shù)水平線不一。

11.Git 的歷史記錄不安全

正確:Git 的官方描述是“笨笨的內(nèi)容跟蹤”,它并不關(guān)心你整個倉庫歷史的完整性和精確性,這導(dǎo)致了重命名和 git rebase 這類操作很難跟蹤他們的修改記錄。相反 SVN 始終都可以精確的、完整的找到你需要的變動記錄。

12.Git 無法提供細(xì)顆粒的權(quán)限控制

正確:因?yàn)?Git 分布式的原因,每個人都擁有完整的倉庫代碼,導(dǎo)致每個人都有完整權(quán)限看到所有的內(nèi)容。雖然這樣對于開源項目來說沒什么,但是對于企業(yè)來說,這是不可接受的。相反,SVN 可以設(shè)置目錄級別的權(quán)限控制,你可以設(shè)置他只讀或者讀寫,而且非常適合大型項目。

13.Git 對二進(jìn)制文件存儲不友好

正確:Git 因?yàn)榉植际皆?,無法很好的處理二進(jìn)制文件,他是基于復(fù)制模式來管理的,所以并不適合有很多二進(jìn)制文件的項目,比如圖片多的項目。

* 翻譯來自:svnvsgit

* 如有翻譯錯誤歡迎指正

* 希望給那些對 SVN 有誤解的朋友一個參考。

* 理性的認(rèn)識兩個不同的工具,合適的使用不同的工具,他們之間沒有誰更好,只有誰更合適。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容