研发制胜秘诀 |
代码管理、版本控制,是软件开发企业最重要的项目管理工具,但也不只限于软件行业。我们有着各种商业配置管理工具使用的经验, 更有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. 群英汇:功能扩展
与“开源速递·集中管理”平台整合;
- Hooks 插件扩展;
- 改进的二进制文件和文件换行符属性冲突检查;
- Subversion 管理员命令行;
- 其他 bugfix ...
6. 为什么选择群英汇

VersionControl/attachments/vc.png?ts=1198736739)