开源速递·版本控制系统(svn/subversion,bzr/bazaar,hg/mercurial,cvs)

开源速递·版本控制系统

开源速递·版本控制

研发制胜秘诀

代码管理、版本控制,是软件开发企业最重要的项目管理工具,但也不只限于软件行业。我们有着各种商业配置管理工具使用的经验, 更有CVS、Subvision、Mercurial、Bazaar 等开源配置管理工具的经验。 我们有着十分的理由推荐您使用开源软件,有十足的把握打败众多商业软件!想听听我们的意见么?

  • 你的代码被“商业软件”绑架了!在版本控制系统的选择上,不要选择商业软件!

  • 还在使用CVS么?想想迫近的产品发布日期,和不断变化的需求列表,您还嫌头痛的不够么?

  • “群英汇”提供开源版本控制系统(Subversion)的培训、部署、升级等技术支持服务,为您的“版本控制”系统提供解决之道;

1. 技术内幕

  • Subversion

    • 集中式版本控制的典型代表。CVS 的最佳替代者,是开源软件安装量最大的版本控制系统。是开源软件自身生存和继续发展的基础软件。

  • Bazaar

    • 与 Ubuntu 一起成长的分布式版本控制系统。实现卖主分支另外的方法,下一代个人版本控制系统。

  • SVK

    • 用SVK这一在 SVN 上实现的分布式管理系统,曾经作为 Subversion 分布部署的最佳选择,今天已经显得过时了。我们有更好的跨地域版本控制的方案。

  • Eclipse + Subclipse

    • 在最流行的集成开发工具上使用最流行的版本控制工具。

  • TortoiseSVN

    • 如果你使用 Windows 平台的话。

  • 命令行

    • 解除 Windows 程序员对命令行的恐惧。

2. 分布式还是集中式版本控制

分布式版本控制系统已成爆发之势,越来越多的开源软件使用诸如 GNU arch, Bazaar, Mercurial, Git, SVK等分布式版本控制系统。 这一方面是开源软件开发的本质(全部源码公开,跨地域的开发团队)决定的,另一方面是管理角度(服务器扩展性,基于信任链的代码提交)。

我们认为了解分布式版本控制系统,对于程序员是必要的,因为:

  • 从开源社区汲取营养的需要;

  • 对第三方只读源码库维护的需要;

  • 下一代个人版本控制工具;

我们认为“集中式”版本控制系统,仍然是商业企业软件开发中的首选,因为是企业对授权和集中管理的需要。 即使有跨地域开发的需要,我们也可以通过镜像、代理等方式实现 Subversion 的高效运行。

比较项目

分布式(bzr)

集中式(svn)

性能

服务器扩展能力

★★★

网络带宽占用

☆☆☆

本地保存的完整版本历史

★★★

-

安全

历史版本的安全验证

★★★

-

数据安全(BCP)

★★★

分支操作

代码合并(merge)能力

★★★

★★

分支管理

★★★

★★★

分支建立速度

★★★

用户界面

使用平台广泛性

★★★

★★★

命令行可用性

★★★

★★★

Windows图形界面

★★★

权限管理

统一的用户帐号

-

★★★

针对目录的 Checkout

-

★★★

目录授权

-

★★★

分支授权

★★★

其他

远程版本库复制

★★★

★★★

离线提交

★★★

-

3. SVN 和 CVS 的对照

我们选择 Subversion(SVN) 作为企业版本控制工具的首选,而不是 CVS。不是因为我们使用 Subversion 时间更久,也不是因为我们对 Subversion 更有感情。恰恰相反,CVS 很早就已经渗透到我们的血液中。关于 CVS 可以参考我们这个文档: 《CVS 版本控制》

多年的使用 CVS 的开发经验,我们深感 CVS 在使用和管理上的不足。下面是 SVN 和 CVS 的对照。

比较项目

CVS

SVN

权限控制

是否依赖系统帐号

依赖

不依赖

可否对分支授权

是否支持LDAP认证

图形化帐号管理

是(集中管理平台)

用户可否获取忘记口令,修改口令

是(集中管理平台)

目录,文件名变更

分支管理

创建分支时间

耗时*

分支可见、查询

二进制文件

二进制优化

二进制文件标识

手工

自动

二进制文件(图形文件)被破坏

易破坏

不易破坏

事物处理

量子提交

修改提交说明

单个文件

换行符

可否指定换行符类型

检查换行符设定,避免跨平台开发带来的混乱

功能扩展

CVSROOT

hooks 脚本

网络带宽

网络带宽占用

脱机命令

部分

4. SVN 和 商业版本控制系统的对照

那么商业的版本控制工具如何呢?我们要大声告诉你,不要!不要把您的核心资产——“代码”让他人绑架!

比较项目

某商业软件

SVN

服务器端存储

是否依赖数据库(额外的管理负担)

依赖

不依赖

数据存储格式是否开放

是否可以将版本库导出?以便重建、导入其他项目、分发给第三方或者配置管理软件切换。

是否可以对服务器端存储进行整理

是否可以彻底删除配置项

是*

可否通过插件进行功能扩展?

命令行

命令行功能是否完备?以便实现工作自动化

是否可以集成到自动编译(nightly build)系统?

文件状态保持

客户端本地是否有配置文件以保持状态?

是否依靠服务器端进行状态保持?

客户端是否可以脱机运行?

工具整合

是否可以和资源管理器整合?

是否有 Eclipse 插件?

成本

软件本身成本

培训成本

5. 群英汇:功能扩展

6. 为什么选择群英汇

7. 相关文档