目前流行的「源程序版本管理和項目管理軟件」排行榜
據網上查閱,目前流行的源程序版本管理軟件和項目管理軟件有Github、Mercurial(hg)、SVN、Microsoft TFS等。git
圖中數據爲2010年整理,因此存在必定的誤差,僅做爲參考。github
圖片出處:http://www.infoq.com/news/2010/03/Review-Version-Control-Systems數據庫
如下即是我對各軟件特性進行的查閱整理出的優缺點
GitHub
優勢:瀏覽器
- 免費且開源。
- 用於敏捷高效地處理任何或小或大的項目。
- Git支持分支功能(branch)。若是你想開發一個新的產品功能,你能夠創建一個分支,對這個分支的進行修改,而不至於會影響到主支上的代碼。
- 可拿Git作備份系統,或者同步兩臺機器的文檔,很方便。
- 支持離線工做。本地提交能夠稍後提交到服務器上,不用和集中的代碼管理服務器交互。 只有最終完成的版本才須要向一箇中心的集中的代碼管理服務器提交。
- Git 提交都是原子的,且是整個項目範圍的,而不像 CVS 中同樣是對每一個文件的。
- Git 中的每一個工做樹都包含一個具備完整項目歷史的倉庫。
- 簡易的初始化。對於隨便寫兩行代碼就要放到代碼管理工具裏的人來講,再合適不過。
缺點:服務器
- 學習成本大。由淺入深的過分很漫長,須要大量時間的投入。
- Git版本庫須要頻繁的手動維護。
SVN
優勢:svn
- 對目錄的組織的管理更加方便。SVN不光對文件作版本跟蹤,也會對目錄作版本跟蹤。所以能夠根據項目的須要,對目錄結構隨時進行修改,能夠把現有的目錄移動到新的地方。
- 保證提交操做的完整性。SVN對提交操做的處理方式相似數據庫的事務處理,要麼所有成功,要麼所有無效,保證了原子性。
- SVN容許一個文件有任意多的可命名屬性,功能十分徹底。
缺點:工具
- 不能離線工做。全部的版本信息都放在服務器上。若是脫離了服務器,開發者基本上能夠說是沒法工做的。
- 提交、更新、瀏覽歷史的速度慢。耗費CPU資源。
- 代碼不能及時提交。強迫使用者即時處理衝突,而後才能提交。
- 不能恢復到歷史版本。SVN記錄了單個文件的歷史版本,但沒有記錄全局版本,不能恢復到上次的狀態。
- 需手動「cleanup」。不少評論回覆這點讓他們抓狂。
Mercurial(hg)
優勢:學習
- 學習門檻較低。總體上看,hg須要掌握的命令要比git少不少。
- 能夠一鍵徹底恢復到歷史版本的某一個切面。
- 封裝好。相比git,hg不多暴露一些實現內的細節。
- 照顧 svn 的遷移用戶。hg 的不少命令是遷移自 svn 命令的,目標實際上是爲了讓 svn 用戶更容易接受。這使得已經習慣 svn 命令的團隊,幾乎零成本的切換到 hg。
- hg 的 pull 更多的時候可讓你避免建立分支。hg 比如蘋果系統,git 比如 Linux,前者在經常使用命令上更好用更易用,後者在功能上更強大更靈活。
- hg的版本庫不須要維護。
缺點:版本控制
- 分支管理不靈活。Mercurial的branch管理和Git相比不是很方便。大型團隊不肯使用。
Microsoft TFS
優勢:圖片
- 任務版上能將需求、項目進度盡收眼底,對於小團隊而言,比甘特圖更有用集成了項目管理、版本控制、BUG 跟蹤。
- 能有效實現 SCRUM能與 VS 無縫接合。
缺點:
- 搭建、維護tfs比較複雜,硬件要求也比較高。
- 整個系統是用 asp 實現的,用瀏覽器訪問至關慢。
2016/3/13 12:46:06