版本控制

                            作者 : luyear
标题 : CVS新手入门(初尝版本控制软件) 
关键字: CVS,版本控制,入门 
分类 : 成功心得 
密级 : 公开 
(评分:★★★ , 回复: 5, 阅读: 1671) »» 
一直想装团队开发的版本控制软件了,但是一直没有机会,上星期总于开始使用了,感觉就是一个字:"爽",根据朋友的推荐,决定使用CVS,这个OpenSource的东西,先下载了CVSNT,装了上去,发现没有没有设置,只要选择Root就OK,难道就那么简单? 哈哈
接着选客户端了,看了曹晓钢的文章,他推荐那个乌龟TortoiseCVS ,于是下载了,装了上去,由于没有任何CVS的使用经历,乱点了一通,把真个硬盘的图标搞的乱78遭,不好,赶紧卸载了(有点傻啊:)
又听说WinCVS不错,好,立马上网下了WinCvs13b13-2.zip,装上一看,好像挺简单的界面啊!
首先要设置是连接属性了:admin -> preferences
先看<General页>
Authentication 选择pserver(你问为什么? 网上是这样说的,哈哈,好像CVSNT都是这样连接的)
Path就输入CVS服务器设置的Root,注意要用Unix的写法(用"/"代替"\")
Host address就是CVS服务器的地址或域名,局域网使用可以写电脑名称
User name就是你在服务器上的用户,CVSNT的权限好像和NT的用户结合起来了,还可以把用户名和密码写在一起如  Tom:password,这样登陆的时候就不需要输入密码了
输入完上面的,底下的CVSRoot就生成了,不用你自己修改
再看<CVS>页
HOME是一个winCVS保存自己设置的目录
再看<WinCVS>页
这里可以选定自己的文本文件比较工具和编辑工具
这里推荐大家使用Araxis Merge这个比较工具,太cool了,比较文件一流
编辑工具默认是记事本,不爽,当然是用UltraEdit代替了
其他页可以先不管了,确定!,保存设置

然后点change location图标,选择你的工作目录,可以是新目录,也可以是你原来放project的目录

开始正式用了,先login,如果你的用户名没有包含密码,系统提示输入密码
login成功后,let me go
我们首先要把一个project导入到CVS服务器,右键点击你的project目录,选import,系统提示你过滤文件类型,你可以过滤掉一些不需要纳入版本控制的文件,比如*.~*,*.dcu,
import以后,你的本地文件并没有出现版本号,这时候你需要Checkout一下这个目录
(checkout的时候小心,本地目录要选根目录,不然checkout出来的文件就到你的子目录的底下建一个目录了),这样你的文件夹就会出现一个黑色的勾,里面的文件也会出现1.1.1.1的版本号

如果你不是项目管理者,只是修改者,你没有程序的源码,这时你需要右键点击工作目录的根目录,然后用"checkout"从CVS服务器拿Project

有了代版本控制的代码了,现在可以修改你的代码了,改完存盘,你会再wincvs里面发现那些被修改国的文件的图标变成了红色,要update这些文件到Server,选定这些文件,然后commit就OK了,如果CVS发现你的文件确实修改过,且SERVER上的文件在你上次取文件后没有被修改过,就会更新你的文件,然后给你文件加新的版本号(第一次时1.2)

如果你知道别人修改了代码,你也想修改相同的文件,就要用Update了,update就是用Server上的文件更新你没有修改过的文件,好的习惯是每天想修改代码时候先Update一下,看别人有没有新的文件,修改完了以后要commit前,先用QueryUpdate查询一下,看看你修改的文件别人有没有修改过

如果图标变成红色C,那就是冲突了,表明有两个以上的人同时修改了一个文件,这时你就需要用diff看看你的文件和Server上的有什么不一样,如果大家不是改的相同地方,好办,改改你的程序就好了,如果相同的地方就要程序员之间协调了,一般协调比较好的团队是不会出现出现这个问题的

下面讲讲新增删除的问题,如果你在一个project里面新增了一些文件,那用commit是不能提交到Server的,必须用modify -> add selevtion添加你的文件,系统会检查你的文件是不是文本格式,如果不是,用add binary提交,提交后的图标是红色A
如果你要删除一个文件,使用modify -> remove, 图标变成红色X
不论修改,增加,删除的文件,都需要commit后才会生效的

上面的就是基本应用了,其实CVS功能很多的,详细的我就不说了,这里只是给从来没有用过版本控制的朋友分享一下成功的经验.欢迎初学者一起来讨论研究

http://www.delphibbs.com/keylife/images/u42285/cap53.JPG 



2003-8-24 15:01:00    
 发表评语&raquo;&raquo;&raquo;     

 2003-9-22 10:16:56    CVS控制Delphi程序的一些心得(1)1.有时你用delphi修改了程序,发现红色的文件很多个,但是commit的时候确只有pas和dfm文件传到服务器并且更新了版本,这是因为有些文件日期被更新了,但是内容没有变化,cvs把你本地的文件和服务器文件比较后发现文件是一样的,版本号就不变了,通常是ddp,或dof文件就会出现这种情况
2.关于dfm文件,如果你的代码修改这限制于pas文件,窗体上并没有动过任何东西,可是你在CVS里面可以看到dfm文件也更新了,这多半是由于你移动了窗体的位置照成的,这时候,你只需要commit你的pas文件就好了,如果两个人都挪动了窗体位置,都commit的话,还有出现冲突呢!一旦出现冲突,你就要查看冲突部分代码,如果发现只是窗体位置冲突的话,使用update里面的get clear copy选项就可以取得没有冲突控制码的source了 

 
 2003-10-7 11:49:46    控制文档的版本注意的几个问题1.尽量使用文本格式(需格式可以用Html),使用word等bin格式的文件的话,很难被CVS比较差异了
2.推荐第三方比较软件:"AraxisMerge"作为wincvs的扩展比较软件,当发现文件差异较大时候,这个软件可以详细的列出差异的地方,比UltraEdit的比较好些

想玩docbook可以参考
http://worldhello.net/doc/docbook_howto/firstexp.html 

 
 2004-2-8 21:51:14    新遇到的几个问题近日装了CVSNT 2.0.23以后,出现了几个问题
1.commit 一个文件的时候经常出现如下提示,
cvs server: user 'luyear' is not a valid editor of the file 'xx.pas'
2.忘记了,想到再写 

 
 2004-2-19 15:36:03    关于2004-2-8问题的解答看了cvsnt官方网站上的帖子,原来就那么简单
One of the changes that was made in 57g was to propagate the '-c' commit
flag, which checks to see if the user is a valid editor of the file before
committing it.  There are two ways to get around  it:

1) Check to see if you have the -c flag set for commit in your .cvsrc, or,
if you are using WinCVS or the like, check to make sure that the "Check for
valid edits" check box is unchecked first.

2) Edit the file using cvs edit prior to committing it.

 Boyd 

 
 2004-8-17 22:50:39    关于使用权限的问题有个问题忘记提了,如果你的服务器修改了你的用户名或密码,通常你会发现登陆不了CVS了,用了正确的用户名和密码也不行,这是你就要注意了:wincvs好像会把你在服务端的用户和密码保存在project相应cvs目录的root文件,你要修改这里的用户名和密码为当前正确的用户名和密码就OK,这不知道是不是bug,或是有什么设置我还不知道 

  



2005-6-27 13:56:57    
 发表评语&raquo;&raquo;&raquo;     

 2005-6-27 14:10:12    版本控制工具横向比较
版本控制工具横向比较


   版本控制是程序开发、管理必不可少的工具,特别是在多人协作的团队中,适宜的版本控制工具可以提高开发效率,消除很多有代码版本带来的问题。本文首先列举没有版本控制工具时可能遇到的问题,再对主流版本控制工具做概要介绍,之后对作为Java开发者首选的版本控制工具CVS的历史、功能、概念做详细的介绍;最后在Eclipse+CVS环境中,以CVS使用的一个完整流程为例,介绍如何正确的使用CVS工具。

为什么要使用版本控制工具?
如果没有版本控制工具的协助,在开发中我们经常会遇到下面的一些问题:
一、 代码管理混乱。如果是别人添加或删除一个文件,你很难发现。没有办法对文件代码的修改追查跟踪。甚至出现文件丢失,或新版本代码被同伴无意覆盖等现象。
二、 解决代码冲突困难。当大家同时修改一个公共文件时,解决代码冲突是一件很头疼的事。最原始的办法是手工打开冲突文件,逐行比较,再手工粘贴复制。更高级的做法是使用文件比较工具,但仍省不了繁杂的手工操作,一不小心,甚至会引入新的bug。
三、 在代码整合期间引入深层BUG。例如开发者A写了一个公共函数,B觉得正好可以复用;后来A又对这个公共函数进行了修改,添加了新的逻辑,而这个改动的却是B不想要的。或者是A发现这个公共函数不够用,又新做了一个函数,B却没有及时获得通知。这些,都为深层BUG留下隐患。
四、 无法对代码的拥有者进行权限控制。代码完全暴露在所有的开发者面前,任何人都可以随意进行增、删、改操作,无法指定明确的人对代码进行负责。特别是产品的开发,这是极其危险的。
五、 项目不同版本发布困难。特别是对产品的开发,你会频繁的进行版本发布,这时如果没有一个有效的管理产品版本的工具,一切将变得非常艰难。
   上面只是列举了一些没有版本控制系统可能带来的问题,特别是对大型项目和异地协同开发有了一个合适的版本控制工具,它可以有效解决因为代码版本不同引起的各种问题,让我们的开发人员能更多的把精力花费在开发上面。而不是每次都花费很多时间进行代码整合和解决版本不同带来的各种问题。

主流版本控制工具介绍
   现在,有很多优秀的版本控制工具供我们选择,下面就五种主流的版本控制工具做简单的介绍。
Starteam 
   是一个集合了版本控制、构建管理(Build Management)和缺陷跟踪系统为一体的软件,并且具有强大的图形界面,易学易用;但管理复杂、维护困难。2002年底被Borland公司收购。
PVCS Version Manager
    是美国的MERANT公司软件配置管理工具PVCS 家族中的一个组成部分,它能够实现源代码、可执行文件、应用文件、图形文件和文档的版本管理;它能安全地支持软件并行开发,对多个软件版本的变更进行有效的控制管理。
ClearCase(CC)
   是ROSE构件的一部分,目前最牛的配置管理工具,主要应用于复杂的产品发放、分布式团队合作、并行的开发和维护任务。可以控制word, excel,powerpoint,visio等文件格式,对于不认识的格式可以自己定义一种类型来标识。
Visual SourceSafe(VSS)
   简单易用、方便高效、与Windows操作系统及微软开发工具高度集成。
CVS(Concurrent Versions System)
   是开发源码的并发版本系统,它是目前最流行的面向软件开发人员的源代码版本管理解决方案。它可用于各种平台,包括 Linux 、Unix和 Windows NT/2000/XP等等。
   前面三种是重量级的商业版本控制工具,更适合庞大的团队和项目,并且价格不菲。Visual SourceSafe是微软的产品,当然只能用在windows平台并与微软的开发工具无缝集成。CVS免费开源,并且几乎所有开源项目都是使用CVS进行版本管理,无疑,它是我们Java开发者最优选择。

CVS的历史、功能、基本概念的介绍

历史
   CVS 诞生于 1986 年,当时作为一组 shell 脚本而出现;1989年3月,Brian Berlinor用C语言重新设计并编写了CVS的代码;1993年前后,Jim Kingdon最终将CVS设计成基于网络的平台,开发者们能从Internet任何地方获得程序源代码。截至目前最新版本是2004年12月13日发布的1.12.11。

功能介绍
一、 代码统一管理,保存所有代码文件更改的历史记录。对代码进行集中统一管理,可以方便查看新增或删除的文件,能够跟踪所有代码改动痕迹。可以随意恢复到以前任意一个历史版本。并避免了因为版本不同引入的深层BUG。
二、 完善的冲突解决方案,可以方便的解决文件冲突问题,而不需要借助其它的文件比较工具和手工的粘贴复制。
三、 代码权限的管理。可以为不同的用户设置不同的权限。可以设置访问用户的密码、只读、修改等权限,而且通过CVS ROOT目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。
四、 支持方便的版本发布和分支功能。

基本概念
资源库(Repository)
CVS的资源库存储全部的版本控制下的文件copy,通常不容许直接访问,只能通过cvs命令,获得一份本地copy,改动后再check in(commit)回资源库。而资源库通常为与工作目录分离的。CVS通过多种方式访问资源库。每种方法有不同目录表示形式。
版本(Revision)
每一个文件的各个版本都不相同,形如1.1, 1.2.1,一般1.1是该文件的第一个revision,后面的一个将自动增加最右面的一个整数,比如1.2, 1.3, 1.4...有时候会出现1.3.2.2,原因见后。revision总是偶数个数字。一般情况下将revision看作时CVS自己内部的一个编号,而tag则可以标志用户的特定信息。
标签(Tag)
用符号化的表示方法标志文件特定revision的信息。通常不需要对某一个孤立的文件作tag,而是对所有文件同时作一个tag,以后用户可以仅向特定tag的文件提交或者checkout。另外一个作用是在发布软件的时候表示哪些文件及其哪个版本是可用的;各文件不同revision可以包括在一个tag中。如果命名一个已存在的tag默认将不会覆盖原来的;
分支(Branch)
当用户修改一个branch时不会对另外的branch产生任何影响。可以在适当的时候通过合并的方法将两个版本合起来;branch总是在当前revision后面加上一个偶数整数(从2开始,到0结束),所以branch总是奇数个数字,比如1.2后面branch为1.2.2,该分支下revision可能为1.2.2.1,1.2.2.2,...
冲突(Conflct)
完全是纯文本的冲突,不包含逻辑上的矛盾。一般是一份文件,A做了改动,B在A提交之前也做了改动,这样最后谁commit就会出现冲突,需要手工解决冲突再提交。

CVS与eclipse集成开发
 前面对CVS的历史、功能、概论等理论知识做了介绍。下面我们将使用最流行的Java IDE Eclipse中内置的CVS工具,以一个完整开发流程,介绍实际环境中CVS的正确使用。关于CVS系统的安装,不是本文的内容,您可以从附录的链接中获取安装的介绍资料。

常用的CVS控制命令
Check Out(检出)
把源文件从cvs源代码仓库中取出,缺省的版本是最新的版本,你也可以选择指定的版本。在每次更改源代码之前,需要Check Out最新的版本,再起基础之上对源代码进行修改。将代码目录checkout到指定目录下,所有文件都是read-write。
Check In(检入)
把源代码加入到cvs源代码仓库中,每一个添加进代码库中的文件的版本是 1.1。以后每次修改文件重新ci以后,此文件的版本递增为1.2 ,1.3.……。在每次对源代码修改之后,需要Check In,提交最新版本的源代码。
Synchronize with Repository(与资源库同步,简称同步)
使本地更改与资源库同步,它会列出本地和资源库之间不同的所有文件。
Add to Version Control
将新的文件加入到版本控制之中。
Add to .cvsIgnore
将文件设置到版本控制之外,这样该文件或目录中的文件的更改在CVS中不可见,即使同步也无法发现。

CVS正确使用步骤
一、 同步(Synchronize)
就是将本地更改与服务器同步,同步之后可以清晰的看到上一捡出(Check Out)版本之后本地、服务器上的最新改动。这是非常有用的,特别是敏捷开发,强调集体拥有代码。有了同步功能,你可以全局把握项目的代码,可以很方便的跟踪公共模块代码的任何改动。
具体操作:在Eclipse的资源视图(Resource Perspective)或者Java视图(Java Perspective)中,选中要同步的目录,点击右键选择"Synchronize with Repository",之后它将显示同步的视图。

同步之后,它有四种Mode可以选择,见上图绿色框框里按钮。从做到右分别为:
Incoming Mode:表示修改是来自服务器,对应于更新(update)操作。
Outgoing Mode:表示修改是来自本地,对应提交(commit)操作。
Incoming/ Outgoing Mode:本地和服务器修改都在该模式(Mode)中显示。
Conflicts Mode:显示本地和服务器修改的冲突文件。
二、 更新(update)
比较简单,选择Incoming Mode,再选中要更新的文件,右键选择update操作。
三、 解决冲突并合并(solve conflct and merge)
如果有冲突文件,冲突文件不能更新。你必须先解决冲突再操作。选中冲突的文件,再点右键选择"Open in Compare Editor",用比较工具打开该文件。

比较器(Compare)视图,左边版本底的是本地文件(Local File),右边是远程服务器文件(Remote File)。使用"Select Next Change"按钮(绿框中的第一箭头向下按钮),逐一查看不同点。如果不同点标识为黑色框框,则不用管它。如果是蓝色框框,则需要手工调整。如上图,不同点是蓝色框框,将鼠标放到两个不同点的中间小方框中,则凸出一个向右的按钮,并显示提示信息"Copy Current Change from Right to Left",意思是将右边服务器的不同点覆盖到左边的本地文件。点中此按钮。重复这样的操作,将所有服务器上的更改拷贝到本地。
如果有一行代码,本地和服务器都同时做了修改。这时,修改点则显示红色框框。这时,你就必须手工做正确的修改。全部修改完成,保存本地文件。
此时,如果修改点没有了蓝色的框框,就可以开始做合并(merge)操作了。操作也很简单,选择该文件,点击右键,选择"Mark as merged"。
注意:必须确保没有蓝色框框,即完全拷贝了服务器的修改才可以做合并(merge)操作,否则会覆盖服务器上的代码。
四、 提交(commit)
更新服务器代码,解决冲突之后,首先要查看本地文件修改之后是否有错误。如果有,当然首先解决错误,再提交。 

 
 2005-6-27 14:39:25    Visual SourceSafe 6.0一、版本管理的必要性 
如果说70年代的软件危机导致了软件工程思想的诞生和理论体系的发展,那么80~90年代尤其是90年代软件产业的迅猛发展导致了另一种新思想的产生和实现,这就是软件的版本管理。 
只要参加过软件开发的人都清楚,现在的软件项目完全由一个人来完成是难以想象而且也是不可能的,通常是有一个研发小组来共同分析、设计、编码和维护,并有专门的测试小组对已完成编码调试的软件进行全面的测试。在软件开发这个庞大而复杂的过程中,需要涉及到各个方面的人员,信息的交流反馈不仅仅是在研发小组的成员之间及各个研发小组之间,还存在于客户和研发者之间。所有的这些交流反馈意见信息都有可能导致对软件的修改,小的可能只是对某个源文件中的某个变量的定义改动,大到重新设计程序模块甚至可能是整个需求分析变动。在这个工程中,由于软件开发所固有的特征,可能会形成众多的软件版本,而且我们并不能保证不出现错误的修改,而这样的一个困难局面却又非常现实地摆在项目开发管理者的面前,他/她该如何有效地解决这些问题,具体地说就是如下一些问题: 
1. 怎样对研发项目进行整体管理; 
2. 项目开发小组的成员之间如何以一种有效的机制进行协调; 
3. 如何进行对小组成员各自承担的子项目的统一管理; 
4. 如何对研发小组各成员所作的修改进行统一汇总; 
5. 如何保留修改的轨迹,以便撤销错误的改动; 
6. 对在研发过程中形成的软件的各个版本如何进行标识,管理及差异识辨等等。 
一个非常直接的反应,我们必须要引进一种管理机制,一个版本管理机制,而且是广义上的版本管理,它不仅需要对源代码的版本进行管理,而且还要对整个项目进行管理。以往的那种被誉为具有良好编程风格的做法,诸如在对他人的源程序进行修改时注释修改原因,修改人和日期,如果是多个成员同时进行了修改,那么需要进行及时的人工的差异比较和综合以便形成一个统一的新版本。这种做法在当前的大型软件的开发中已经越来越没有空间了,可以说是一种以小作坊的形式来面对软件的社会化大生产,再也不可能行得通了。 
其实,版本管理的思想很早就存在于软件开发者的头脑之中,只是以往的认识没有现在人们所意识到的那样迫切。UNIX的程序开发系统较早就提供了能够进行开发小组中源代码版本管理的工具,现在的Linux更是提供功能强大的能够跨平台的版本管理器,国外公司的基于Windows的版本管理器也已经有了比较成熟的产品,国内的研究单位如北京大学计算机系CASE实验室也在致力于这方面的工作。在众多的成熟产品和试验产品中,这里只将对使用比较广泛,有较大用户前景且又能较易获得的版本管理器产品Microsoft公司的Visual SourceSafe 6.0进行详细的介绍,针对普通的研发小组的解决方案,及具体的实现。 

二、Visual SourceSafe 6.0(VSS 6.0)简介 
VSS 6.0现在是作为Microsoft Visual Studio 6.0这个开发产品家族的一员,如Visual C++ 6.0和Visual J++ 6.0一样。 
1. VSS的简单工作原理 
Microsoft的VSS 6.0解决了软件开发小组长期所面临的版本管理问题,它可能有效地帮助项目开发组的负责人对项目程序进行管理,将所有的项目源文件(包括各种文件类型)以特有的方式存入数据库。开发组的成员不能对该数据库中的文件进行直接的修改,而是由该版本管理器将该项目的源程序或是子项目的源程序拷贝到各个成员自己的工作目录下进行调试和修改,然后将修改后的项目文件作Checkin提交给VSS,由它进行综合更新。VSS也支持多个项目之间文件的快速高效的共享。当某个成员向VSS中添加文件时,该文件将会被备份到数据库中,以便所有的成员都能共享该文件。而且每个成员对所有的项目文件所作的修改都将被记录到数据库中,从而使得修改的恢复和撤销在任何时刻,任何位置都成为可能。小组的成员可能得到该项目的最新版本,对它进行修改,并保存一个新的版本。 
VSS的项目组织管理使得开发小组的协调变得简单容易且很直观,当一个和一组文件发放给另一个成员,小组,Web站点或是任何其他的地址,VSS确保他们之间的真正共享及所选的一组文件的不同版本的安全性。现在,越来越多的开发者可以通过他们的开发环境来访问VSS的功能。而且VSS可以很容易地于Microsoft Access、 Visual Basic、 Visual C++、Visual FoxPro和其他的开发工具集成在一起,一旦VSS集成到开发环境中,就可以象控件一样使用,能够很好地体现出VSS的易用性和强大功能。 
2.VSS中的几个重要概念 
为了更好的了解VSS,有必要对如下一些概念给予说明。 
首先是项目的概念,所谓的项目是一组存在VSS中的文件(任何类型),可以在项目中或是项目之间进行文件的添加、删除、编辑和共享。一个项目与操作系统的文件夹有很多的相似之处,但它更好地支持文件合并、历史和版本控制。所有的文件存在VSS数据库的项目中,开发组成员不能在VSS中的主备份文件上工作(除了检查和版本比对等特殊情况外)而是VSS为每个成员在各自的工作目录下提供一个拷贝以供工作。尽管在没有工作目录的情况下也可以查看某个文件,但如要真正在VSS管理下工作,就必须要创建一个工作目录。 
VSS能够维护一个文件的多个版本,包括一个从不同版本之间进行修改的记录。版本控制包括如下方面: 
组内协调—在一般情况下,确保在任何时刻都只有一个成员对某个特定的文件进行修改,这样可以防止文件被其他成员的修改意外更新。当然,VSS管理员可以改变此缺省设置以允许对单个文件同时有多个Checkout,并且仍禁止对他人的修改进行覆盖。 
版本跟踪—对老版本的源代码和其他文件进行归档和跟踪,而且这些版本能够被重新得到以便进行bug跟踪或其他目的。 
跨平台开发—支持同一代码在跨多个开发平台时的版本控制。 
重用或面向对象代码—跟踪哪些程序使用了哪些代码可被重用的模块。 
版本控制的涵义在以后的章节中将会得到更进一步的论述。 
我们已经知道,VSS 提供版本控制和历史服务,以保证一个文件的每个版本都是可恢复的。VSS用日期/时间戳来记录文件是何时被Checkout或是何时被修改的,它主要有三种方法来跟踪文件和项目的版本: 
版本号:这是由VSS维护的内部数码,用户对它没有控制权。每个文件和项目的每个版本都有一个版本号,这些版本号总是一个整数且是递增的。 
标签:这些是用户赋给某个项目或文件的某个版本的一个字符串,可以是任何格式的长度不超过31字符的字符串。 
日期/时间戳:它给出了一个文件何时最后被修改的信息,或者是一个文件何时被Checkin。VSS同时支持12小时和24小时的时间格式。 
工作目录是用户真正对项目文件进行调试修改的地方,当用户Checkout 或提取一个文件时,VSS将该项拷贝到用户的工作目录下,当用户修改了该文件并将其Checkin或提交时,VSS再将它从用户的工作目录拷回到VSS的数据库中。在用户作Checkout时,VSS将会自动管理他的工作目录,诸如创建必要的子目录。而且工作目录可以随时创建或修改。 
3. VSS 6.0的一些新增的特征和功能 
归档和恢复—在VSS 6.0中这两个操作是在一个用户界面友好的VSS管理员wizard中进行的,而在以前的版本中,它们只能通过命令行来实现。 
移动文件—当用户移动文件时,VSS 6.0自动将该文件共享到一个新的项目中,并在原项目中将其删除。在新项目中,该文件的属性是共享的。 
多个项目之间的差异比较—该功能允许用户在不同的项目之间进行差异比较。 
单个文件的展开—在以前的版本中,VSS只能展开一个目录(文件夹),在VSS 6.0中,同时可以展开一个文件。 
快速提取—由于VSS 6.0在性能上的提高,现在的文件提取速度比以往VSS版本的快两倍左右。 
历史信息过滤—VSS 6.0 支持查看那些没有标签的文件和项目的历史。 
清除临时文件夹选项—该新功能可使用户很方便地清除临时文件夹。 
检查外部的超连接—在VSS 的较早的版本中,只有内部的超连接和项目内的跳转才得到检查,VSS 6.0允许用户检查项目之外的超连接和跳转。 
创建打开VSS数据库的快捷键—用户可以使用VSS Explorer中该新功能创建一个打开某个特定VSS数据库的桌面快捷键。 
HTML格式的帮助—VSS的以往版本使用的是WinHelp格式。 

三、VSS 6.0的解决方案 
在对VSS 6.0的工作原理,功能和新增特征有了一个较全面的了解后,我们开始进入到本节,即如何运用VSS 6.0来实际解决软件开发工程中的版本管理和控制问题,怎样有效地构架一个系统的解决方案。 
首先看一下我们的开发小组所处于的实际情况,最一般的情况是整个项目使用的就是微机环境,每个开发者在各自的Windows微机下利用Microsoft的VC、VB、VJ等等来开发项目中各个子项目或子模块,通常这个小组是局域网的一部分或者是一个较为独立的子网,可能配有专门的服务器。这样的一个开发环境对于实现用VSS 6.0来进行版本控制和管理是非常有利而且是比较直观的,因为VSS 6.0也需要这个网络环境。 
其次是对于项目本身来说的,一个项目经过分析设计后一般都会分成若干个子项目由若干个开发小组各自负责编码调试,但软件开发的实际情况决定了各个小组之间并不是完全独立的,他们在很多情况下都需要协调交互和信息反馈,开发过程中的每一步都有可能会导致对前一阶段工作的修正,因为软件开发很大程度上是一个螺旋式的过程,更不用说小组之内的相互交流了。在这个不断交互改动的过程中,将可能形成的项目的阶段版本、部分版本和完整版本的数量是可想而知的,而以往的通常的版本人工管理方法已是不能胜任了。而且还有一个非常重要的方面不可忽略,这对系统软件的开发尤为明显,即软件的层次结构。一般的做法是在通用的系统软件之上为多个应用开发相应的应用程序,与此相对照的项目开发组也一般分为系统开发组和各个应用开发组,应用软件的开发和使用过程中将会反馈回无数的应用本身和系统软件的问题,如果只是针对每个应用来单独修改更新系统软件版本,这样就不可避免地导致多个系统版本的不一致,这样对于真正解决系统所存在的问题就显得力不从心了。而VSS 6.0正适合于这种软件的开发体系结构,可以为各个小组创建自己的项目,而这些项目又从属于一个总的项目,所有的修改都将被汇总处理以形成一个统一的最新版本。 
针对这样最为普通的一个软件开发环境和组织结构,运用VSS 6.0进行版本控制管理的非常有效而且代价较小的解决方案是: 
在一台Windows NT服务器或者是一台较为独立的Windows 98/95 PC上安装VSS 6.0的服务器端软件,创建一个为该整个项目存放用的数据库,然后在该数据库中创建各个项目和子项目,并由VSS管理员为小组的每个成员创建一个帐号及他们各自的权限; 
在开发小组其他成员的PC上安装VSS的客户端软件,并创建自己的工作目录,这样在软件的开发过程中,他们只要通过该客户端软件登录到VSS服务器上,Checkout当前要进行工作的项目或文件,如有修改的在工作结束时将其Checkin提交给VSS服务器进行统一更新。 
解决方案如图1所示。 

四、VSS6.0服务器的安装 
在我们给出整个解决方案后,现在来看一下如何安装VSS服务器。VSS 6.0是Microsoft Visual Studio 6.0 套件的成员,我们就以这个版本为例进行说明。 
第一步,将Visual Studio 6.0 的CD1放入CD-ROM,自动进入安装程序,选择第二项“Server Applications and Tools(Add Only)”,如图2所示; 
第二步,然后在“Server Setups”的“Server Components”中选择“Visual Source Safe Server”,按“Install”按钮后,根据提示放入CD2,如图3所示; 
第三步,根据Installation Wizard的提示,继续安装过程,选择安装路径,按图4左上角的按钮,系统继续进行安装,直至提示你重启以使新安装的程序生效,重启计算机。 
VSS 6.0服务器的安装比较简单,它既可以安装在Windows NT下,也可以安装在Windows 9x下。 

五、VSS 6.0客户端的安装 
在VSS 6.0服务器安装完毕后,就可以在VSS管理员的指导下安装客户端的软件。由于我们是在一个Windows环境的子网内,每台PC客户机均可通过网上邻居来访问VSS服务器。在VSS管理员为用户指明VSS客户端软件的安装程序“Netsetup.exe”的位置后,用户可以直接通过资源管理器“Explorer”在网上邻居中找到该程序,并双击以运行它,如图5所示。 
Netsetup.exe被启动后进入VSS客户端的安装,在如下提示框中输入用户名和工作组名,如图6所示。 
选择VSS的安装路径后,在图7中点击安装图标,进入实际安装步骤,以后的工作将由系统自动完成。 
当系统提示你,VSS已成功安装,到此所有的安装工作已经完成。 

六、VSS6.0服务器的配置和管理 
在VSS 6.0服务器安装完毕后,就可以针对开发项目进行VSS服务器的配置和管理,这些工作均需由VSS管理员来完成。 
首先,为整个项目创建一个VSS数据库(在VSS服务器安装时,系统已经创建了一个缺省数据库Common),启动Visual SourceSafe 6.0 Admin(Start /Programs/Microsoft Visual Studio 6.0/Microsoft Visual SourceSafe/Visual SourceSafe 6.0 Admin),跳出如图8的窗口,点击下拉菜单Tools中的Create Database...菜单项,将出现如图9的窗口,选择新数据库的路径,例如创建MyApp数据库,然后点击OK按钮,系统将完成创建工作。 
第二步,为新创建的数据库(例如MyApp)建立用户,首先需要打开该数据库,点击下拉菜单Users/Open SourceSafe Database...,然后选择数据库MyApp,打开它,如图10所示。再选择菜单项Add User...,输入用户名和口令,如图11所示。然后依次创建其他的用户。 
第三步,在该新建的数据库中创建项目Project。启动Microsoft Visual SourceSafe 6.0 (Start/Programs/Microsoft Visual Studio 6.0/Microsoft Visual SourceSafe/Microsoft Visual SourceSafe 6.0),出现如图12的窗口,点击下拉菜单File中Open SourceSafe Database...,跳出如图13的对话框,选择一个数据库(例如MyApp),双击它或按Open按钮一打开该数据库;一个项目Project是一组相关的文档或者是一个文件的集合,VSS允许你以任何的层次结构来存贮和组织你的项目。在VSS数据库中,你可以创建一个或者多个项目。点击菜单File中的命令Create Project...,创建一个项目,例如MyProject,如图14所示;创建完项目MyProject后,需要向MyProject中添加文件,点击File中Add Files命令,将跳出对话框,选择相应文件或目录,点击Add按钮,将它们添加到MyProject中去,如图15所示。 
VSS服务器的配置到此基本上已经完成了,创建了数据库和项目,并为它们建立了相应的用户,这样用户在客户端的VC等集成开发环境中就可以直接登录到VSS服务器上,进行在VSS控制管理下的开发工作。 

七、在客户端的VC中使用Source Code Control 
当VSS服务器端的安装配置工作全部完成,并在客户端也完成了VSS的安装,这样就可启用VSS来管理控制整个开发小组的源代码和文档的版本管理。本节我们以应用比较广泛的VC++ 6.0为例来说明如何坐在客户端运用VSS,以实现所有的开发工作均处于VSS的有效的控制管理之下。 
启动Microsoft Visual C++ 6.0,在VC的集成开发环境中,点击File菜单的Open Workspace 命令,跳出的对话框如图16所示,与没有安装VSS客户端软件的VC有一个明显的区别:在对话框的底部增加了一项“Open a project from source code control source control”。 
点击source control 按钮,将跳出如图17的登录对话框,输入你的用户名和口令,通过Browse...按钮选择你要登录的数据库。选择一个项目Project,在文本区输入它在本地的工作目录,VSS服务器将在该工作目录下拷贝一份源代码以供用户开发调试和修改,如图18所示。其他的操作就如同在本地开发一样,将鼠标移至VC窗口的边框,按右键选上Source Control,就会出现Source Control工具条,如图19所示。选择Source Control工具条中的相应按钮,可以完成诸如获取某项目文件的最新版本,向VSS数据库中添加新文件,将修改后的文件Checkin提交给VSS数据库,查看某个项目文件的历史信息,进行不同版本文件及不同项目之间文件的差异比对,还有共享某个项目或文件。这样操作起来是不是很轻松呢?! 

 
 2005-6-27 16:16:02    安装CVSNT和配置CVSNT服务器安装CVSNT:
1. 下载CVSNT-2.0.4a;使用administrator登陆到Server机器上。 
2. 双击自解压的exe文件,选择Full Install,其它按照默认方式安装;安装完毕后可以在服务控制器中发现多了2个服务:cvsnt与cvslocking 
3. 发送Service Control Panel到桌面,形成快捷方式。 
4. 安装程序会自动将CVS安装路径,设置到系统的Path环境变量当中,因此使用者可以在控制台(cmd)中任意位置执行cvs.exe,这一点对下面的配置很重要!! 

配置CVSNT服务器:
1. 双击Service Control Panel快捷方式,在Service Status页面,确认2个服务正常和稳定运行。 
2. 选择Repository页面,点按Add按钮,选择已经准备好的E:\CVSRoot这个目录,确认,OK,Yes,这时会在E:\CVSRoot下面建立CVSRoot目录,这是CVS默认的管理目录(默认模块)。如果报错,那是系统Path路径未设置正确。 
3. 选择Advanced页面,勾上Use local users for pserver ...,(Why? I don’t know!J),在Temporary栏选择已经准备好的E:\CVSTemp,确认,OK。 
4. 点按【应用】按钮,确认,退出,OK,搞定!! 

就这么简单! 


 

                                

查看回复