SVN和Git的比較

最近開始學Git,跟以前常用的SVN來做個對比,以便對雙方的優缺點了解更多些。

其實Git和SVN還是挺像的,都有提交,合併等操作,看來這是源碼管理工具的基本操作。


1. Git是分佈式的,SVN是集中式的,好處是跟其他同事不會有太多的衝突,自己寫的代碼放在自己電腦上,一段時間後再提交、合併,也可以不用聯網在本地提交;

2. Git下載下來後,在本地不必聯網就可以看到所有的log,很方便學習,SVN卻需要聯網;

3. Git鼓勵分Branch,而SVN,說實話,我用Branch的次數還挺少的,SVN自帶的Branch merge我還真沒用過,有merge時用的是Beyond Compare工具合併後再Commit的;

4. Tortoise也有出Git版本,真是好東西;

5. SVN在Commit前,我們都建議是先Update一下,跟本地的代碼編譯沒問題,並確保開發的功能正常後再提交,這樣其實挺麻煩的,有好幾次同事沒有先Updata,就
Commit了,發生了一些錯誤,耽誤了大家時間,Git可能這種情況會少些。


大家也可以搜一搜Git和SVN命令的比對。


下面有一篇文章這樣討論,樓主認爲SVN沒什麼用,我比較認同Ghoststears的觀點。

有了GIT,SVN純粹一垃圾 

Ghoststears:

任何事情,歸根結底都是人的問題,工具只是工具。

SVN 是集中式的,會出現你說的耦合。但從另外一個方面來說,這也要求開發人員代碼的規範:不要一個函數幹很多事情,不要一個文件寫很多個類。

另外,將不可運行的代碼提交到任何版本控制系統中都是沒有意義的。這也就是版本控制的核心思想之一。也就是提交的粒度:原子性。所謂的原子性,也就是完成一件任務,這個任務可以是一個函數聲明,也可以是一個函數的實現,亦或是一個子系統。但這個任務的完成的標誌就是代碼可以運行,不能運行的代碼,最多也就是完成了半個任務。這個是不符合版本控制思想的。試想,你 update 到某一個 version 的時候,代碼竟然是不能運行的,是何心情???

將不能運行的代碼提交,完全是開發人員素質或者公司管理流程、機制的問題。

另外,很多人都強調:我晚上下班了要在家裏幹活,不能提交!!!來抨擊集中式版本控制工具。且不說對待工作和生活態度。先看看國內的企業,防員工如防賊的多的去了。有多少人能帶着筆記本,把公司的源代碼簽出來呢???

版本控制系統中,工具只是其中一環。要結合公司的策略來選用合適的工具。版本控制 != 版本控制工具 !!!= 源代碼管理。

最後,人各有喜好。上綱上線的,完全沒有必要。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章