什么是源代码管理工具?
简单地说, 源码管理工具是一种 记录代码更改历史, 可以无限回溯, 用于代码管理,多个程序员开发协作的工具.
为什么要用源代码管理工具?
你可能会想, 需求出来了, 老大把我要做的功能告诉我,我去写代码就行,完事了,我再打包发给他 让他加入到整个代码中,然后测试.有问题再反馈回来,我再修改,再打包.这样不是也挺好吗?
当然我要说,这样当然是可以的,但是如果你们要修改同一个文件怎么办?你们还得事先商量确定 某个时间某个人不能修改等等. 或者新建不同的名字的文件,最后由一个人来合并.
如果你的团队不是3,5个人,而是30,50人呢?你这样的沟通和重复性工作的成本会有多高?
于是聪明的程序员便有了版本控制的设想, 继而有了源码管理工具的不断推陈出新.
如果你稍微开发过一个正式的项目,想必你对 cvs, svn, hg, git 这些也一定 有所耳闻.
下面就简单介绍下2类的源码管理工具.
源代码管理工具分类
简单地可以将源码管理工具分为两类: svn这样的集中式的,和 git这样的分布式的.
话说Linux的作者Linus大牛不满svn, 于是自己花了一周写了个分布式的代码管理工具,
于是就有了大名鼎鼎的git.
托管
就是把代码放到服务器上,当然你可以把代码放在自己的服务器上,用git,svn管理代码。但现在都云时代了,放到托管网站上多好呀。
可以异地开发,不用担心自己电脑硬盘坏了。
推荐几个常用的托管服务, 常用的如下:
google code (支持svn, hg)
bitbucket (hg, , 免费提供1个private和任意多个public的代码库)
github (git)
当然上述的都是免费的服务,可以试一下.
各源代码管理工具简介
一、Visual Source Safe( 简称 VSS )
VSS是微软的产品,是配置管理的一种很好的入门级的工具。VSS最初的名字叫Source Safe,是一家小公司的产品,92年曾经获了最佳小型管理工具奖,然后立即被微软收购。但是微软收购的只是sourcesafe的Windows版本,在美国还有另外两家公司分别获得了继续开发和销售sourcesafe的Mac版本和Unix版本的许可,在MS买进vss之后,基本上没有对vss进行任何的研发,MS内部自身也不用vss。
SourceSafe长得很象早先土气的文件管理器,的确难看。但是难看不碍事,SourceSafe的优点可以用8个字来概括“简单易用,一学就会”,这个优点是它老妈Microsoft遗传下来的,是天生的。虽然SourceSafe并不是免费的,但是在国内人们以接近于零的成本得到它,网上到处可以下载啊。当然Microsoft也不在乎这个小不点的软件,它属于“买大件送小件”的角色。如果你合法地得到Visual Studio,你就得到了免费的SourceSafe。
评价如下:
易用性:★★★★★
易学易用是 VSS 的强项, VSS 采用标准的windows 操作界面,只要对微软的产品熟悉,就能很快上手。 VSS 的安装和配置非常简单,对于该产品,不需要外部的培训(可以为公司省去一笔不菲的费用)。只要参考微软完备的随机文档,就可以很快的用到实际的工程当中。
功能:★★★
VSS 的配置管理的功能比较基本,提供文件的版本跟踪功能,对于 build 和基线的管理, VSS 的打标签的功能可以提供支持。 VSS 提供 share (共享) 、 branch( 分支)和合并( merge) 的功能,对于团队的开发进行支持。 VSS 不提供对流程的管理功能,如对变更的流程进行控制。VSS 不能提供对异地团队开发的支持。此外 VSS 只能在 windows 平台上运行,不能运行在其他操作系统上。
安全性:★★★
VSS 的安全性不高,对于 VSS 的用户,可以在文件夹上设置不可读,可读,可读 / 写, 可完全控制四级权限。但由于 VSS 的文件夹是要完全共享给用户后,用户才能进入,所以用户对VSS 的文件夹都可以删除。这一点也是 VSS 的一个比较大的缺点。
总体成本:★★★★
VSS 没有采用对许可证进行收费的方式,只要安装了 VSS ,对用户的数目是没有限制的。因此使用 VSS 的费用是较低的。
技术支持:★★★★★
由于 VSS 是微软的产品,可以得到稳定的技术支持。
二、 SVN(Subversion) - CVS(Concurrent Version System)的替代和升级版本
先说说CVS,CVS是开源代码的配置管理工具,其源代码和安装文件都可以免费下载。记得在学校读研的时候,学校实验室的代码全部都用CVS管理,为啥?很简单,两个字:免费!它与Eclipse配合,基本上Java的代码编写,代码管理和版本管理都可以“免费”搞定了。
SVN(Subversion)是近年来崛起的版本管理工具,被誉为cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。虽然在 2006年时SVN的使用族群仍然远少于传统的CVS,但已经有许多开放源码团体决定将CVS转换为SVN。已经转换使用SVN的包括了FreeBSD、Apache Software Foundation、KDE、GNOME、GCC、Python、Samba、Mono以及许多团体。许多开发团队换用SVN是因为 Trac、SourceForge、CollabNet、CodeBeamer等专案协同作业软件以及Eclipse、NetBeans等IDE提供SVN的支援整合。除此之外,一些自由软件开发的协作网如SourceForge.net除了提供CVS外,现在也提供专案开发者使用SVN作为原码管理系统,JavaForge、GoogleCode以及 BountySource 则以SVN作为官方的源码管理系统。2009年,绝大多数CVS服务已经改用SVN。CVS已经停止维护。
易用性 : ★★★★
Subversion支持linux和windows,更多是安装在linux下。svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。目前业界评价的SVN易用性正在提高。
功能:★★★★
SVN 的功能除具备 VSS 的功能外,还具有:
它的客户机 / 服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码;它的无限制的版本管理检出 (checkout :注 1)的模式避免了通常的因为排它检出模式而引起的人工冲突;它的客户端工具可以在绝大多数的平台上使用。同样, SVN 也不提供对变更流程的自动管理功能。
安全性:★★★★
一般来说, SVN 的权限设置单一,无法完成复杂的权限控制;但是 SVN 通过SVN ROOT 目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。
总体成本:★★★★★
SVN 是开发源码软件,无需支付购买费用。
技术支持:★★★
同样因为 SVN 是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找网上的资料进行解决。
三、 ClearCase
Rational公司的ClearCase是软件行业公认的功能最强大、价格最昂贵的配置管理软件。
ClearCase主要应用于复杂产品的并行开发、发布和维护,其功能划分为四个范畴:版本控制、工作空间管理(Workspace Management)、构造管理(Build Management)、过程控制(ProcessControl)。ClearCase通过TCP/IP来连接客户端和服务器。另外,ClearCase拥有的浮动License可以跨越UNIX和Windows NT平台被共享。
ClearCase的功能比CVS、SourceSafe强大得多,但是其用户量却远不如CVS、SourceSafe的多。主要原因是:ClearCase价格昂贵,如果没有批量折扣的话,每个License大约5000美元。对于中国用户而言,这无疑是天价。用户只有经过几天的培训后(费用同样很昂贵),才能正常使用ClearCase。如果不参加培训的话,用户基本上不可能无师自通。
易用性:★★★
ClearCase 的安装和维护远比 VSS 复杂,要成为一个合格的 ClearCase 的系统管理员,需要接收专门的培训。 ClearCase 提供命令行和图形界面的操作方式,但从 ClearCase 的图形界面不能实现命令行的所有功能。如果Unix/Linux服务器上安装了Samba服务,可以直接通过Windows下Clearcase的客户端直接访问源代码,相对比较简单。
功能:★★★★★
ClearCase 提供 VSS, SVN所支持的功能,但不提供变更管理的功能。 Rational 另提供了 ClearQuest 工具提供对变更管理的功能,与 VSS不同, ClearCase 后台的数据库是专有的结构。 ClearCase 对于 windows 和unix 平台都提供支持。 ClearCase 通过多点复制支持多个服务器和多个点的可扩展性,并擅长设置复杂的开发过程。
安全性:★★★★
ClearCase 的权限设置功能与 SVN 相比,SVN 有独立的安全管理机制, ClearCase 没有专用的安全性管理机制,依赖于操作系统。
总体成本:★★
要选用 ClearCase ,需要考虑的费用除购买 license 的费用外,还有必不可少的技术服务费用,没有 Rational 公司的专门的技术服务,很难发挥出 ClearCase 的威力。如现在网上虽有 ClearCase 的破解软件,但尝试应用的公司大多失败的缘故。另外,对于web 访问的支持,对于变更管理的支持功能都要另行购买相应的软件。
技术支持:★★★★★
Rational 公司已被 IBM 公司收购,所以有可靠的售后服务保证。
四、总结
工具对比一览表
特性 VSS SVN ClearCase
易用性 ★★★★ ★★★ ★★★
功能 ★★★ ★★★★ ★★★★★
安全性 ★★★ ★★★★ ★★★★
总体成本 ★★★★ ★★ ★★★★★
技术支持 ★★★★ ★★★ ★★★★★
以上几种工具的总结如下:
1. VSS 的使用简便易学,但 VSS 的功能和安全性较弱,且只对 windows 平台进行支持,建议作为项目配置管理的入门时采用的工具;
2. SVN 的安全性和版本管理功能较强,可以实现异地开发的支持,但 SVN 安装和使用多采用命令行方式,学习曲线高,同时不提供对变更管理的功能,对于小型团队,可以采用 SVN 进行管理。
3. ClearCase 功能完善,安全性好,可以支持复杂的管理,但学习曲线和学习成本高,需要集成ClearQuest 才能完成完整的配置管理功能。大公司如果采用异地多研发中心同时开发的模式,一般推荐使用ClearCase。
SVN - Vss与Svn 的对比
1. 支持重命名,这对 Java 开发来说非常重要。
为了得到更好的代码,开发中需要经常进行重构,重构就经常涉及到文件的重构名,而重命名中 VSS中是不被支持的。
2. 开发的时候不一定要锁定。
一方面导致重构不方便,另一方面,不能离线开发,使用 SVN就不同,可以带回家继续开发,回来后,提交就行了。
3. 多平台。
可以支持多个平台下的操作
4. 更好的客户端支持。
Eclipse 中的 VSS Plugin 不如它的 SVN Plugin 好用。一个在 Windows 下用的 SVN 客户端 TortoiseSVN 也比VSS 的客户端好用(VSS 只有微软提供的一个 GUI 客户端)。
5. 更好地与外围工具集成。
各种各样的外围工具(主要是服务器端),满足多种需要。如果有需要,也可以自己写插件或管理脚本,开放的架构,允许我们这样做。
6. 方便。
一个例子:部署应用的时候,以前的做法是找出一个项目中修改过的文件,更新到服务器上去,现在可以在服务器上执行 svn export 命令,把代码库中的最新版本导出,完成部署(也可以替换回老版本)。
7. 速度与稳定性看起来都不错。
学习它的管理、它的工作方式,是值得的。而 VSS是一个已经被逐渐抛弃的软件。如果时间不是多得没处用,那么就把时间花在最值得花的东西上面。