利用CVS进行源代码控制

引言:CVS(Concurrent  Versions System)主要用于源代码控制,通过一个中央管理器(也就是通用的pserver服务器来进行代码管理),当一个项目中的某个成员对代码修改之后,其他成员能及时反映出修改了什么内容并提示消息?通过这样的一个系统,一个项目组可以并行的开发软件,并尽可能的减少代码版本冲突等常见问题。

目录:
1、模型
2、解决方案
3、入门教程
4、在eclipse中使用CVS

1、模型:
      现在一个开发公司打算开发一个商业采购程序,他的客户端计划实现代码语言为c++和java,服务器端实现为j2ee,这次这家开发公司计划用web service作为底层技术基础,这样客户端通过soap消息来调用服务器端。因此,这个项目组就开始招集人马,为了提高效率,因此成立了三个项目组,一个专门开发服务器端,一个项目组为java客户端,一个项目组是熟悉c++的,因此开发时会成立三个项目组,现在他们希望通过一个代码管理系统来对三个项目组进行代码管理。第一点,从安全性来说,这三个项目组之间是不能彼此之间访问代码(他们之间的接口不在此考虑中);第二点,各个项目组成员可以下载到属于他们组的代码;第三点,在一个项目组内,当一个成员把代码完成并测试之后,必须提交到这个管理系统中;第四点,为了某个项目组中的成员可以测试他们项目组中的代码,因此他是可以更新他们项目组中成员的代码到本地中(都是最新版本的);第五点,其他成员或者测试员可以更新获修改同组成员的代码;第六点,如果一个文件被两个程序员下载到本地修改后提交时,后提交的程序员会接到通知。为了达到上面的要求,这家开发公司就采用了CVS来作为他们的源代码管理系统,以减少管理成本。

2、解决方案:
     CVS系统满足了上面的模型需求,第一点要求,CVS默认采用了Unix/Linux的用户登陆管理方式,所以对文件的验证是通过用户和组来管理的,所以不同的项目组可以拥有不同的代码模型;第二点要求,CVS系统支持用户
从系统中下载模型(chekout);第三点要求,CVS系统支持用户提交修改的文件(commit);第四点要求,也支持更新(update);第五点要求, CVS系统对属于同组用户的验证是宽松的;第六点要求,对于后改的文件在提交时会进行版本验证,并做出提示。
     为了简化操作,Unix/Linux系统可以安装CVS服务器pserver,而为了降低项目组中的成员的学习与操作成本,在Windows下的成员可以使用WinCVS作为客户端使用。

3、入门教程:转载地址)内容如下:

S. 1 - Explain yourself, sir.

1.1 What is CVS?
CVS (Concurrent Versions System) is a utility used to keep several versions of a set of files, and to allow several

developers to work on a project together. It allows developers to see who is editing files, what changes they made

to them, and when and why that happened.
Many programming projects (both open-source and proprietary) use CVS nowadays. Ever wonder why there seem to be

directories called 'CVS' in a source package you just downloaded? That's the developer who packaged it being lazy

:) Ever see one of these :

    $Id: cvs-tutorial.txt,v 1.8 2000/07/21 20:31:40 doc Exp $

in a source file, and wonder what it means? I'll be telling you how to decipher such things, and how to make them

appear in your project source files later.
CVS, along with the likes of Bugzilla, are some of the tools that you use once, and never stop using. Trust me.

You'll love it.

1.2 Why should I use CVS?
Because it rocks hard. Ever want to work on a project with others, except maintaining a working codebase is a

bloody nightmare? CVS does that for you. Ever want to see who made a particular change to a file, so you can batter

them round the head and shoulders with a trout and demand they explain themselves? CVS does that. Ever want to

maintain a complete history of all changes to all source file since the project's inception? CVS does that, too.

1.3 Where can I get CVS?
CVS can be got in quite a few places. The primary site is http://www.cyclic.com/. It's available in RPM and DEB as

well, I believe. FreeBSD comes with it installed as part of the base install.
You can also get windows/dos versions of the client, both with and without a GUI. I recommend WinCVS for windows,

for those of you who demand a GUI, and cervisia and linCVS for your preferred UNIX. Of course, this tutorial only

covers command line usage :)

S. 2 - Down to Business then

2.1 How does CVS work?
CVS can either work locally, or via the network. I'll be covering network usage in this tutorial, as it seems to be

the most commonly used, and local usage is identical, except for setup, and environment variables used.
CVS works by keeping RCS versions of each file in a directory in a central repository on a machine (the 'CVS

Server', if you will.). It handles requests from clients to make amendments, or retrieve past versions (or

"revisions") of files. It also allows files to be 'tagged' (i.e. 'marked' as being in a certain state, i.e.

3_2_RELEASE :)). It also caters for conflict resolution if several changes are committed at once.

2.2 Terminology

    * 'Module' - a particular set of files kept in CVS.
    * 'Repository' - Location on CVS server where modules are kept.
    * 'Revision' - A certain version of a file.
    * 'Tag' - A certain milestone in a file or module's development.
    * 'Branch' - A 'fork' of the module.


2.3 Getting Started
The first thing to do is to install CVS itself. It's a pretty standard package. You can us
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
笔者有幸接触过以下几种常用的配置管理工具:VSS、SVN、Clearcase,在此做一个小小的总结,并Ctrl+C了以前一些网友的对比评论,不一定准确,只是希望通过这些总结对自己和初学者有所帮助。如果想进一步了解这些工具,请baidu和google,如果想深入了解,敬请到图书馆借书并实践。一、 Visual Source Safe( 简称 VSS )VSS是微软的产品,是配置管理的一种很好的入门级的工具。VSS最初的名字叫Source Safe,是一家小公司的产品,92年曾经获了最佳小型管理工具奖,然后立即被微软收购。但是微软收购的只是source safe的Windows版本,在美国还有另外两家公司分别获得了继续开发和销售source safe的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)的替代和升级版本先说说CVSCVS是开源代码的配置管理工具,其源代码和安装文件都可以免费下载。记得在学校读研的时候,学校实验室的代码全部都用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、Google Code以及 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 是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找网上的资料进行解决。三、 ClearCaseRational公司的ClearCase是软件行业公认的功能最强大、价格最昂贵的配置管理软件。ClearCase主要应用于复杂产品的并行开发、发布和维护,其功能划分为四个范畴:版本控制、工作空间管理(Workspace Management)、构造管理(Build Management)、过程控制(Process Control)。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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值