目前流行的“源程序版本管理和项目管理软件”排行榜
据网上查阅,目前流行的源程序版本管理软件和项目管理软件有Github、Mercurial(hg)、SVN、Microsoft TFS等。
图中数据为2010年整理,所以存在一定的偏差,仅作为参考。
图片出处:http://www.infoq.com/news/2010/03/Review-Version-Control-Systems
以下便是我对各软件特性进行的查阅整理出的优缺点
GitHub
优点:
- 免费且开源。
- 用于敏捷高效地处理任何或小或大的项目。
- Git支持分支功能(branch)。如果你想开发一个新的产品功能,你可以建立一个分支,对这个分支的进行修改,而不至于会影响到主支上的代码。
- 可拿Git做备份系统,或者同步两台机器的文档,很方便。
- 支持离线工作。本地提交可以稍后提交到服务器上,不用和集中的代码管理服务器交互。 只有最终完成的版本才需要向一个中心的集中的代码管理服务器提交。
- Git 提交都是原子的,且是整个项目范围的,而不像 CVS 中一样是对每个文件的。
- Git 中的每个工作树都包含一个具有完整项目历史的仓库。
- 简易的初始化。对于随便写两行代码就要放到代码管理工具里的人来说,再合适不过。
缺点:
- 学习成本大。由浅入深的过度很漫长,需要大量时间的投入。
- Git版本库需要频繁的手动维护。
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