目前流行的“源程序版本管理和项目管理软件”排行榜
据网上查阅,目前流行的源程序版本管理软件和项目管理软件有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