網上有不少關於 SVN 和 Git 的比較,可是大多數都是錯誤的,誤解的。git
下面給你們列出來一些常見的誤解和真相,雖然這並不能說明哪一個系統更好,可是能夠幫助你更好的理解兩個系統之間的差別segmentfault
錯誤:他們的存儲機制其實是同樣的,因此相差很是小。例外的是二進制文件,SVN 反而會遠比 Git 佔用的小,由於 SVN 對二進制文件也能進行差別存儲。安全
錯誤:不少人認爲 SVN 建立分支是複製整套代碼,代價很大。實際上從 1.0 版本開始,在 SVN 裏建立分支的代價已經很是很是小,你能夠任意建立分支來修復一個小 BUG 或者開發新的功能分佈式
錯誤:這是一個過期的誤解,從 1.5 開始就不須要手工指定合併的版本號範圍了,更強大的是從 1.8 版本,還提供了自動合併的功能,大大方便了分支之間的代碼合併。svn
錯誤:從 1.7 版本開始,已經變爲只在根目錄存在.svn 目錄了。工具
錯誤:像 FreeBSD 和 LLVM 這種有名的開源項目都還在使用 SVN。實際上,有 47%的開源項目都在使用 SVN,然而使用 Git 的只有 38%。在公司層面就更多使用 SVN 的了,由於 SVN 是真正的標準企業級版本控制系統。學習
錯誤:他們是平等的。分佈式只是實現版本控制的另一種方法。集中式和分佈式兩種方法都有他們的正反兩面,分佈式或許適合某些人,可是他也帶來了某些問題,好比:沒有權限控制;每一個人都須要徹底 clone 整個倉庫,無法像 SVN 能夠只 checkout 須要的子目錄;無法鎖定文件等等問題插件
錯誤:在 Git 裏每一個人都須要把整個倉庫都 clone 下來,2G 的倉庫或許沒什麼問題,可是到達幾百 G 後呢?你須要 clone 幾百 G 的內容,想一想多可怕。有個經典的解決方式就是把 Git 倉庫分爲多個小的倉庫,可是這就致使了其餘幾個問題:你須要管理多個倉庫;破壞了原有項目的完整性;無法繼續跟他們一塊兒使用分支;命令行
錯誤:某些工做流適合使用 Git,可是某些狀況適合使用 SVN翻譯
錯誤:SVN 已經能很好的處理合並和衝突,已經成爲他很重要的一個功能特性。只有在分支裏重命名了文件夾或者文件時會有這種狀況,這是個歷史遺留問題。
正確:Git 的設計初衷就是一套低級版本控制系統,容許高級用戶經過命令玩一些黑科技,可是這並不安全,對初學者也不友好。Git 也由於沒有良好的設計和混亂的命令受到了一些指責:這致使加長了學習曲線和大大增長了公司和團隊的成本,特別是大型團隊以及團隊成員水平不一的狀況。好比美術、策劃、開發、這類人員,技術水平線不一。
正確:Git 的官方描述是「笨笨的內容跟蹤」,它並不關心你整個倉庫歷史的完整性和精確性,這致使了重命名和 git rebase 這類操做很難跟蹤他們的修改記錄。相反 SVN 始終均可以精確的、完整的找到你須要的變更記錄。
正確:由於 Git 分佈式的緣由,每一個人都擁有完整的倉庫代碼,致使每一個人都有完整權限看到全部的內容。雖然這樣對於開源項目來講沒什麼,可是對於企業來講,這是不可接受的。相反,SVN 能夠設置目錄級別的權限控制,你能夠設置他只讀或者讀寫,並且很是適合大型項目。
正確:Git 由於分佈式緣由,沒法很好的處理二進制文件,他是基於複製模式來管理的,因此並不適合有不少二進制文件的項目,好比圖片多的項目。
翻譯來自: svnvsgit
若有翻譯錯誤歡迎指正
但願給那些對 SVN 有誤解的朋友一個參考。
理性的認識兩個不一樣的工具,合適的使用不一樣的工具,他們之間沒有誰更好,只有誰更合適。
最後推薦你們一個好用的SVN倉庫:SVNBucket
SVN快速上手
SVN經常使用命令
SVN鉤子解放你的雙手
輕鬆解決SVN衝突
Mac用戶SVN圖形界面推薦
Eclipse安裝SVN插件和檢出代碼