StarTeam 软件配置管理工具 CVS vs. STARTEAM

laofo · 2009年03月12日 · 1 次阅读

CVS 是开放源码的一个奇迹,亦是开放源码得以延续和发展的推动者,是版本控制的经典。CVS 是常用的版本控制工具。

Starteam 是一个集合了版本控制和缺陷控制两种功能的软件,并且具有 CVS 没有的强大的图形界面,易学易用。2002 年底被 Borland 公司收购,发展前景未知,它是我是用的第一个大型商用版本控制软件(真的付了 Money 的呦)。

评价 CVS、STARTEAM 孰优孰劣,是一个仁者见仁,智者见智的问题。

Starteam 的图形化界面,能够使初学者易于接收,而且其缺陷控制功能的功能(基于数据库的 Change Request),是 CVS 不具有的,更是相应工具中独树一帜的。

CVS 的优秀跨平台能力、强大的命令行、清晰的服务器端数据结构更便于数据的备份、灾难恢复和可靠性。Simple is Butiful 送给 CVS 一定没错。

侧重不同

CVS 专注于配置管理软件范畴中的版本管理系统。而配置管理系统除了包括版本管理外,还包括构建管理(Build Management)和缺陷跟踪系统。而 Starteam 包括了这三项。本文档也就只比较其版本管理系统的异同。

权限控制

一般来说,CVS 的权限设置单一,通常只能通过 CVSROOT/passwd, CVSROOT/readers, CVSROOT/writers 文件,同时还要设置 CVS REPOS 的物理目录权限来完成权限设置,无法完成复杂的权限控制;而 STARTEAM 无需通过物理路径的权限设置,而是通过自己的数据库管理,实现了类似 WINDOWS NT 的域用户管理和目录文件 ACL 控制。

但是 CVS 通过 CVSROOT 目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。

易用性

Starteam 的图形界面功能强大,但其命令行功能较 CVS 弱,需要自己编写 shell 脚本加强。而随着 WINCVS 作为图形客户端的可用性的增强,Starteam 的强项正在被削弱。

Label 的管理

CVS 的 label 建立在文件上,难以确定到底有多少存在的 label ,而 STARTEAM(图形界面)可以很方便知道有哪些 View Label 及 Revision Label。

CVS 的版本分支, label 是建立在文件上,工作在其他分支的程序同样会看到其它分支的 label;而 Starteam 的 label 只在同一个视图内有效,有独立的命名空间。

STARTEAM 具有 Promotion states,可以看作是 label 的标签。在 label 上又封装一层的 Promotion State 便于记录版本的提升,和建立自动编译;而 CVS 没有浮动 label 的概念,只能通过文件记录方式实现(如我们使用 .promotion 文件记录当前稳定的 label)。

文件缓存

Starteam 存在 CACHE 目录,缓存了所有 Checkout 的版本的文件,因此 Checkout 速度快。而 CVS 没有缓存,check out 过程较慢,尤其是分支的 Checkout。

但我对此表示怀疑。尤其是 Starteam Unix 客户端基于 JAVA 技术,速度明显比 CVS 要慢。

操作文件名和目录名

CVS 的 REPOSITORY 的物理存储结构即为项目的组织结构,使得文件名修改和目录的重新组织成为难题,往往需要管理员权限去手动操作 Repository;而 STARTEAM 的 Repository 的文件结构和视图的文件结构可以完全不同,目录、文件名修改和移动非常方便,基于数据库的文件名管理还可以方便地在不同工程之间共享文件,协同工作。

CVS 是程序员的工具,STARTEAM 还是管理项目的工具

个人文件管理或小项目的组织,需要轻量级的管理,和灵活的文件导入、导出,以及和自由代码的交互,则 CVS,Perforce,PVCS,SourceSafe 等面向文件的版本控制占优势。对于公司、大项目,需要独立的测试、QA 等分工,还要更多的考虑多样的用户权限控制,易用性(图形界面),缺陷控制,则需要面向工程的 STARTEAM 来进行版本控制和开发。

CVS 的优势

CVS 的优势:项目文件可以方便的组合和移植,这是因为 CVS 以文件为核心,即面向文件的管理方式。而且目前网络上很多开放源码都采用 CVS,可以很好沟通。

CVS 配置简单、健壮、可以很容易地移植;STARTEAM 集成度较高,移植过程复杂,需要的管理负担大,需要完善的备份计划。

CVS 是开发源码,服务器端存储易于理解,便于控制;而 Starteam 为商业软件,服务器端存储方式封闭,难以管理。但是 CVS 不提供图形界面,有较长的学习曲线。

Starteam 的劣势

不支持分支的合并,需要过多的手动干预。而 CVS 可以自动完成。

速度慢,一定程度上影响开发效率。

不支持并行开发,不能很好解决 Merge 的问题。而 CVS 可以智能 Merge。

故障恢复困难,需要有专职管理员维护。而 CVS 易于维护。

评价优劣,不如先用先得

不用刻意去取舍哪一个,只要用好,即可。况且,已经有了完美的 CVS、STARTEAM 互相转换的方法。

暂无回复。
需要 登录 后方可回复。