流行的源程序版本管理软件和项目管理软件各自的优缺点

1、Microsoft TFS

TFS本身的功能非常强大,并不单单是个源码管理,不过个人用起来一般也就主要用其源码管理功能。

感觉tfs还是很强大的:

  • 任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用
  • 集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM
  • 能与 VS 无缝接合

缺点:

  • 整个系统是用 asp 实现的,用浏览器访问相当慢(不知道是不是服务器性能太低还是我个人用的电脑配置太低)
  • 从 IE 上访问、填写各种开发、测试记录,也是很慢,感觉不如 mantis BT 这样基于 php 的那么方便、迅速
  • 用 XP 系统无法访问,还得是64位的? 所以把电脑的整体性能拖下来了
  • 团队的邮件细节配置比较复杂,我不关心的项目的变更集也会给我发邮件
  • 测试用例功能具体有无好的应用案例?如何配合自动化测试?

2、Github

Git 是一个源代码版本控制系统,正在迅速成为开源项目的标准。它有一个强大的分布式模型,允许高级用户用分支来处理各种棘手的问题和改写历史记录。

GIT的主要优点是时刻保持数据完整性:在保存到 Git 之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。换句话说,Git 能察觉文件(夹)的任何改动。这项特性作为 Git 的设计哲学,建在整体架构的最底层。所以如果文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git 都能立即察觉。

GIT的缺点是:

  • 概念过于复杂。引入了 index/commit/stash/branch/remote repo 等诸多概念。对于初学 Git 的用户,在使用 Git 的过程中还会继续遇到更多的陌生概念。
  • 命令行语法设计得比较随意且不一致。例如 git pull 等价于 git fetch 后加 git merge,git branch -b 等价于 git branch 后跟 git checkout 。
  • 命令行帮助提示晦涩难懂。比如 git push 的说明 Update remote refs along with associated objects,恐怕很多用户不明白 remote refs 到底是指啥吧。
  • 缺乏良好的封装。初学者有时不得不面对(需要用到(和内部实现相关的知识))的问题。
  • 对代码的维护者友好,但却牺牲了共享者的使用体验。这个问题或许可以通过更好的用户界面来解决。
  • 版本管理未必安全。理论上版本管理系统应该允许代码提交者作任何改动,并且能撤销这些改动。但事实上提交者有不少方法可以破坏一个代码库的内容。
  • 一些简单的操作需要用到过多的命令 。

3、SVN

优点:性能提高。SVN不管文件是文本还是二进制类型,在内部都是以二进制差异比较算法来表示文件的更新部分。这表示所有的文件在文件库中都是以差异的形式储存。而且在网络上传输的,都是较小的文件差异部分。这也使创建分支、打标签、合并等操作可以非常快地完成.对目录的组织的管理更加方便。SVN不光对文件做版本跟踪,也会对目录做版本跟踪。因此可以根据项目的需要,对目录结构随时进行修改,可以把现有的目录移动到新的地方。保证提交操作的完整性。SVN对提交操作的处理方式类似数据库的事务处理,要么全部成功,要么全部无效,保证了原子性。

缺点:由于代码库不是分布式,而是集中在一个地方的。所以导致跨国访问的时候速度很慢。代码库在美国,一部分人在中国频繁提交的情况。在这种场景下,速度不容乐观。由于代码库只有一份,特别是元数据都存在服务器上,所以当服务器崩溃的时候损失严重。

4、Coding

优点:Coding 是基于云计算技术的软件开发平台,集项目管理、代码托管、运行空间、质量控制为一体。在云计算时代,Coding推动软件开发的云端化,使开发者能用一个浏览器完成开发的各个环节。开发人员可以专心构建业务问题的解决方案,而非管理运营或发布堆栈,确保应用满足产品层目标服务等级,同时更为企业层级的项目应用提供了代码质量检验以及项目质量把控的渠道和标准。在保证私有项目的数据安全和稳定的同时,Coding 还结合了冒泡及评论、公开项目发布与讨论等一系列社交化协作功能,打造具有技术支撑的开发者社区。

 

posted @ 2016-03-14 10:24  喜欢搞事的男孩纸  阅读(169)  评论(0编辑  收藏  举报