Visual+SourceSafe+入门教学.docx

上传人:b****6 文档编号:7784864 上传时间:2023-01-26 格式:DOCX 页数:18 大小:143.70KB
下载 相关 举报
Visual+SourceSafe+入门教学.docx_第1页
第1页 / 共18页
Visual+SourceSafe+入门教学.docx_第2页
第2页 / 共18页
Visual+SourceSafe+入门教学.docx_第3页
第3页 / 共18页
Visual+SourceSafe+入门教学.docx_第4页
第4页 / 共18页
Visual+SourceSafe+入门教学.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Visual+SourceSafe+入门教学.docx

《Visual+SourceSafe+入门教学.docx》由会员分享,可在线阅读,更多相关《Visual+SourceSafe+入门教学.docx(18页珍藏版)》请在冰豆网上搜索。

Visual+SourceSafe+入门教学.docx

Visual+SourceSafe+入门教学

 

VisualSourceSafe入门教学

 

作者:

蔡焕麟来源:

CSDN

 

1.简介

在软件工程的领域里,有一块叫做SCM(SoftwareConfigurationManagement),有人管它叫「软件建构管理」。

SCM的传统定义是原始码的版本管理,后来则逐渐演进扩大,还包含了软件开发的一些标准和程序的制定与应用[Summerville2000]。

版本管理工具对目前的软件开发开环境来说相当重要,因为不管是软硬件环境的改变、需求改变、软件本身的bug...等等,都会令软件不断地演进,我们必须记录各个版本,以便随时比对版本之间的差异,或者回到(rollbackto)过去的某个版本;此外,当项目小组成员众多时,工作交接、多人修改同一个档案等情况,都有可能造成档案的版本混乱。

例如一支程序本来由张三撰写,可是因为某些原因(请假、临时支持其它项目、请别人debug....)暂时由李四修改,后来又交回给张三。

如果用传统的档案共享机制,每次有这种情形就要互相通知:

我改好啰,请把档案从档案服务器搬回你家,万一有人忘了,可能就会造成档案版本错乱,而东西交到客户手上才发现bug依然存在。

因此,如果你曾碰过下列情形,而且深感困扰,你可能就需要版本管理工具的协助:

∙档案不见了(用鼠标拖放档案时误动作,不知道拖去哪儿放了);

∙档案被别人覆盖;

∙想要比对各版本之间有何差异;

∙想要回到之前修改的版本(客户反复无常,设计改来改去....);

∙多人同时修改造成的版本混乱;

∙想要知道谁动过的我的程序代码;

∙跨项目共享组件或模块散落在各处。

目前市场上的版本管理工具已经有很多,环肥燕瘦任君挑选,以下几个可能是大家比较熟悉的:

∙RationalClearCase

∙BorlandStarTeam

∙MerantPVCSVersionManager

∙MicrosoftVisualSourceSafe(VSS)

∙ConcurrentVersionsSystem(CVS)

CVS虽然免费,也有窗口接口,但是入门门坎还是偏高,不易入手,以unix/linux社群用得较多;StarTeam和ClearCase功能较强大,价格当然也较贵;PVCS个人也没使用过,无法提供意见;而VisualSourceSafe(VSS)功能虽然比较阳春,但是笔者试用之后,觉得如果只需要管理多人开发时的文件和原始码版本,其实还挺好用的,也很容易上手。

VSS在VisualStudio.NET光盘中就有附了,价格算是相当实惠。

以下是使用VSS管理原始码的好处(有些不是VSS特有的):

∙建构人员可以实施每周的里程碑版本建立,统一编译所有程序代码,确保交给客户的版本一定是最新的,不会因为某个开发人员忘了把自家local的档案复制到server的共享目录而遗漏掉。

∙leader不用一天到晚打电话或发mail去追谁还没有把新的档案放上fileserver。

∙共享单元的更新更简便、确实。

∙提供独立且细微的user权限控管,没有Windows档案分享时的账户权限检查困扰。

∙同一个档案多人同时修改可自动merge最后的修改成果。

∙可将历史版本叫出来比对,显示差异处,以进行合并或修正。

∙提供Web应用程序的档案布署功能。

∙可以和多种开发工具整合,例如:

VisualBasic、VisualStudio.NET、FrontPage200x。

注:

撰写此文件时,使用的是VSS版本是VisualStudio.NET1.0附的VisualSourceSafe6.0c。

1.1基本概念

想象一下没有工具协助的情况下,当多人同时修改一份文件时,要如何确保文件的版本一致?

也许你可以指派一位专人负责管理文件的进出,这个人姑且就叫他Manager好了,Manager待在一间小小的办公室里,负责文件库的维护和文件的进出。

当小组成员Eric要修改文件时,就拿磁盘到这个窗口请Manager复制一份给他,Manager在复制的同时会记下来:

这份文件正由Eric修改;而Eric则会把磁盘拿到他自己的机器上,把档案复制到他的工作目录(workingfolder),然后进行修改。

等到Eric修改完毕,再从工作目录中把档案复制到磁盘上交给Manager,最后文件就被更新到文件库中(这动作叫做checkin),至此整个文件的修改与更新的程序就完成了。

如果在Eric修改期间,Vivid也拿着磁盘向Manager要求修改同一份文件,这时Manager会告诉Vivid:

这份文件目前已经由Eric领出(checkout),且还在修改当中,你得等他改完才行喔。

以目前的作业环境来看,使用磁盘来传递档案似乎是原始人的行径,我们当然可以透过网络来传递档案,但是透过网络传递档案却无法提供上面的例子所要表达的重点:

档案的锁定。

而锁定机制就是VSS(或其它版本管理工具)提供的基本功能之一,它确保了多人修改文件时,版本的一致性。

上面这个例子当中的文件库,就相当于VSS的数据库,而VSS的客户端工具(称为VSSExplorer)则扮演了Manager的角色。

当然VSS提供的功能更多,它也允许多人同时取出(checkout)同一个档案进行修改,并且在将档案送回(checkin)数据库时,自动进行合并(merge),这属于比较进阶的功能,稍后亦会提到。

现在你应该已经大概知道什么是VSS数据库、什么是checkin、checkout,以及文件修改的流程了,接下来就把一些常见的VSS术语列出来,在阅读本文时,如果碰到不了解的术语,也可以随时回头查看。

以下是使用VSS时常见的术语:

术语

说明

VSS数据库

VSS会使用一个数据库来储存各项目的程序

代码版本(包括历史版本和最新版本的档案)。

Projec

VSS项目,是一个项目档案的逻辑结构,跟操作

系统的目录类似(注意不是指特殊开发工具的项目,例如:

VB专案)。

WorkingFolder

客户端的项目工作目录。

每次从VSS数据库取

出档案时,就会将档案复制客户端机器的这个目录下。

MasterCopy

储存在VSS数据库中的最新版的档案。

LocalCopy

储存在本机的WorkingFolder的版本。

CheckOut

把要修改的档案从MasterCopy复制一份到本

机的WorkingFolder下,以便修改。

CheckIn

本机的档案修改完后,把档案送回VSS数据库。

Get

只从VSS数据库取得MasterCopy的档案,但

是不做修改。

当你要取得档案的最新版,并且只对它读取时,可使用此功能。

MultipleCheckouts

一个档案同时被多人取出修改。

Merge

合并MultipleCheckouts的修改结果。

ShadowFolder

影子目录,它是一个硬盘上的实体目录,每当开

发人员checkin档案时,VSS就会同时将档案复制一份到这个影子目录里面。

2.安装与使用范例

本节分别介绍server端与client的安装及使用。

2.1服务器端

服务器端包含了管理工具和客户端工具的安装,相关的管理及设定工作有下列几项:

1.安装VSS。

2.建立数据库(使用Admin管理工具)。

3.建立user账户(使用Admin管理工具)。

4.设定其它选项。

5.设定网络的共享目录。

以下是各项工作的施行细节,我们会在D:

\VSS_DB目录下建立一个新的VSS数据库,如果你不想要建立数据库,也可以使用预设的数据库。

2.1.1安装VSS

直接执行安装程序,安装过程中会有一个安装选项画面,其中有三个选项,分别为SHAREDDATABASESERVER、CUSTOM、与STAND-ALONE。

请选择SHAREDDATABASESERVER。

安装完成后,在〔开始\程序集〕里面会有一个MicrosoftVisualSourceSafe数据夹,里面有四个程序快捷方式:

∙Analyse&FixVSSDB

∙AnalyseVSSDB

∙MicrosoftVisualSourceSafe6.0 

∙VisualSourceSafe6.0Admin

2.1.2建立数据库

开启VisualSourceSafe6.0Admin,如果是第一次执行,程序会提示你要设定Admin账号的密码,若此时不设定,以后也可以在〔Users\ChangePassword〕里面变更Admin账号的密码。

进入VSSAdmin之后,先点选〔Tools\CreateDatabase〕建立一个自己的数据库,建立数据库时会同时建立一个预设的管理员账户'Admin',此账户无法删除。

一个数据库里面可以包含多个项目,当然你可以视需要建立多个数据库,只是一次只能使用一个数据库。

假设你将数据库建立在D:

\VSS_DB目录。

2.1.3建立使用者账户

数据库建立好之后,必须先开启数据库,然后就可以为这个数据库建立user账号,以便日后为各个user赋予适当的档案存取权限。

这些user就是开发小组的成员。

欲开启数据库,请点选〔Users\OpenSourceSafeDatabase〕或者按Ctrl+O,然后选择上一个步骤建立的数据库,如下图:

如果之前建立的数据库没有显示在清单里面,请按右边的Browse钮找到该目录(此动作只需一次),然后按Open钮,即可开启数据库。

数据库开启后,点选〔Users\AddUser〕或按Ctrl+A即可新增一名使用者。

2.1.4设定其它选项

在VSSAdmin中点选〔Tools\Options〕即可开启选项设定窗口,其中有些设定在客户端(VSSExplorer)里面也有,而这里的设定是全域的,也就是如果客户端没有修改自己的设定,就会取用这里的设定。

建议的设定值(True/False表示勾选/不勾选):

页夹

项目名称

设定值

General

Usenetworknameforautomaticuserlogin

True

ProjectRights

EnableRightsandAssignmentscommands

True

2.1.5设定共享目录

你至少要把server端的两个目录分享出来给其它网络使用者存取:

1.分享VSS的应用程序目录,以便客户端可以在网络上直接执行其中的NetSetup.exe进行安装。

2.分享数据库所在的目录,如前面范例中的D:

\VSS_DB。

注意:

如果你在分享VSS的应用程序目录时,把目录权限设为「只读」的话,客户端安装完后将无法自动执行VSS(但仍可手动执行);若目录权限为「完全控制」则不会有这个现象。

2.2客户端

2.2.1安装客户端

安装客户端程序的方法有两种:

1.向管理员询问服务器端的VSS应用程序分享目录,然后直接执行该目录下的NetSetup.exe`.

2.利用光盘安装,安装型态选择"Custom",然后选择"ClientPrograms"。

2.2.2开启数据库

安装完成后,执行VSSExplorer(在「程序集」中的名称是"MicrosoftVisualSourceSafe6.0"),第一次执行时会出现登入窗口,输入要登入的数据库名称(浏览网络上的芳邻,找到2.1.5节所分享出来的数据库目录),然后输入使用者名称和密码,即可登入数据库。

参考下图:

VSSAdmin提供一个选项,可以在登入时自动以目前登入Widnows的使用者名称来登入数据库,前提是VSS的使用者名称要和Windows的使者名称相同。

方法是将VSSAdmin的〔Tools\Options〕的"General"页夹中的"Usenetworknameforautomaticuserlogin"项目打勾。

以后再次执行VSSExplorer时,就会自动以该使用者名称登入,而不会出现登入画面。

2.2.3建立项目

登入数据库之后,由于是第一次执行,所以没有建立任何项目,看到的画面会像下面这张图:

左边是以树状显示的项目面板,"$/"是VSS的rootproject,所有的项目都是建立在此节点之下;右边会显示目前的项目的档案清单;下方状态列中则显示提示讯息、目前登入的使用者名称、档案的排序方式、以及档案数量。

以下步骤示范如何建立一个项目,该项目的档案目录已经事先建立好,位置是"D:

\Projects\Demo1\",而且该目录下已经存在所有文件和程序代码档案。

1.在项目面板中的$/节点上面点一下右键,然后点选〔CreateProject...〕。

在接下来开启的窗口中输入项目名称"Demo1",再按Ok钮即可建立项目。

2.接着将档案加入此项目节点。

做法是在项目面板中的"Demo1"节点点一下,然后点选〔File\AddFiles...〕或按Ctrl+A。

3.接着将项目Demo1目录下,要加入版本管理的子目录加进来,例如:

若要加入Src目录,则照下图方式操作:

注意必须双击欲加入的数据夹,使其图标变成开启的样子,才是加入该数据夹。

确定之后按"Add"钮即可加入,加入数据夹的窗口左下角的"Recursive"项目通常会打勾,也就是该数据夹底下的子目录也要一并加入。

Tip:

你也可以用鼠标拖曳的方式加入档案或资料夹。

Tip:

当你在加入档案时,如果临时要取消,可以按画面方状态列最左边的〔Cancel〕钮。

事实上,只要是比较花时间的工作,都会出现〔Cancel〕钮让你有机会取消工作。

4.数据夹加入之后,程序会询问你是否要将此数据夹设定为工作目录(workingfolder),回答"Yes"即可。

参考下列画面:

此对话盒关闭后即会回加入数据夹的窗口,若不需要加入其它目录,就按"Close"钮关闭此窗口。

5.此时画面应会显示如下图:

注意项目面板中的节点必须设定成工作目录(workingfolder)才能够对该目录执行checkin/checkout动作,例如此范例中的Demo1节点,它是我们自行建立的逻辑项目,并未设定其工作目录(也就是没有对应到实体的目录),因此当你点选Demo1节点时,右边面板上方的状态会显示"NoWorkingFolder"。

如果你需要将Demo1目录底下的所有目录都纳入VSS管理,也可以省略步骤1,而在步骤2加入档案时,直接开启"D:

\Projects\Demo1"数据夹,这样就会连同Demo1这个目录一并加入,且同时为它设定工作目录。

2.2.4设定工作目录

建立项目之后,接着就是要设定工作目录。

首先,在VSSExplorer的项目面板里面找到你的项目,在该项目上点一下鼠标右键,再点选〔SetWorkingFolder...〕,把目录指向你的本机硬盘的项目目录即可。

只要父层的节点有设定工作目录,其下的子节点就不用再指定工作目录了。

设定好工作目录之后,就可以利用VSS执行CheckOut或Get动作。

如果你希望把整个项目的目录和档案都先从从服务器取回来,并且复制到你的工作目录下,你可以使用Get;方法是在项目名称上点一下鼠标右键,再点选〔GetLatestVersion...〕,此时会开启一个对话窗口,如下图所示:

注意左下角的"Recursive"项目,通常我们会希望连子目录一并取回,所以要将此项目打勾。

确定之后按〔OK〕钮即可,遇到不存在的目录,VSS会问你要不要建立,选"YesAll"即可,完成之后,你可以开启档案总管,看一下工作目录中的文件目录结构,如果执行的步骤正确,你需要的项目档案和目录VSS应该都已经帮你从服务器复制过来了。

此动作并非必要,你可以等到你要读取或修改某个档案时,再去Get或CheckOut该档案,到时候VSS一样会帮你建立必要的目录。

如果你希望每次取得(get)或checkout档案时,"Recursive"项目都要自动勾选,你可以在〔Tools\Options〕的"General"页夹更改这个预设设定,参考下图:

项目完成时,或者需要对现有版本进行建置与发行时,可以在服务器的计算机上开启VSSExplorer,利用〔GetLastestVersion〕取得最新版本,你便可以在服务器端进行建置或者备份项目的工作;或者,你也可以透过影子目录(shadowfolder)的功能,来达到相同的目的(参考3.4节)。

3.其它功能

本节将介绍VSS的其它功能,包括:

∙多重checkouts

∙档案的共享(Share)与分枝(Branch)

∙影子目录(ShadowFolder)

3.1多重checkouts

VSS预设不允许多重checkouts,也就是当一个档案或目录被一个使用者checkout之后,其它使用者就不能再checkout该档案目录。

当你的小组可能为多人同时修改一个档案,或多人同时修改一个目录里面的各个档案时,可以将多重checkouts的功能开启。

设定方法是在VSSAdmin管理工具里面,将〔Tools\Options〕的"General"页夹里的"Allowmultiplecheckouts"项目打勾。

使用多重checkouts时,有些值得特别注意的地方,例如:

一个档案由多人同修改时,VSS将如何处理?

以下将说明相关的注意事项。

文字文件v.s.进位档

当你开启多重checkouts选项时,表示有可能一个档案同时由多人修改,而VSS能够将这些人对同一个档案的修改结果合并(merge)起来,每当一个使用者checkin档案时,VSS就会自动进行merge。

也由于VSS提供了这项功能,因此限定只有文字文件(textfiles)才能够多重checkouts,二进制档案(binaryfiles)仍然是禁止的。

VSS会自动判断档案是属于文字文件还是二进制文件(藉由搜寻二进制的\0x0字符),你也可以预先指定好哪些档案类型是二进制文件,省得VSS还要花时间判断;方法是:

开启VSSAdmin的〔Tools\Options〕,切到"FileTypes"页夹,把二进制档案的附文件名加入"Binaryfiles"字段里。

参考下图:

注:

所谓的文字文件,通常是指可以用记事本开启的纯文本文件,因此WORD文件(.DOC)档案应该归类为二进制档案。

图中的Filegroups清单里面,笔者自行加入了Delphi项目会用到的档案类型,这项设定是用在当你加入档案时,显示在档案类型下拉盒中,方便你挑选档案而已,如下图:

其实大部分的情况下,用预设的"*.*"就行了。

合并机制

当一个档案被多人checkout时,每当有人将该档案checkin,VSS就会自动比对档案的差异,并且合并有差异的部分。

考虑下面的场景:

1.张三与李四都checkout了foo.txt这个档案。

2.张三修改了foo.txt的第100行,并且checkin。

3.李四修改了foo.txt的第200行,并且在210行的地方加入了5行程序代码。

4.李四改完了,并且checkin。

上面的例子对VSS来说毫无困难,它会安静地自动合并张三和李四所做的修改。

但不是所有情况都这么完美,万一两个人都修改了同一行程序代码,此时VSS就无法替你做决定,必须由你自己决定怎样合并档案。

考虑下面的场景:

1.Carol与Michael都把test.txt取出来修改。

2.Carol修改了第1行,然后checkin。

3.Michael也修改了第1行,然后checkin。

这时候VSS无法判定到底要怎么合并,于是开启窗口显示两个版本的差异,让后面checkin的人(Michael)决定怎么合并,参考下图:

图中分为三个面板,左上角的面板是目前服务器上的版本(上一个人checkout的版本),右上角是本地端的版本,下方面板则是合并后的版本;此时Michael就可以从两个版本中观察差异的部分,决定好怎么修改后,在左边或右边面板中点鼠标右键,选择〔ApplyChange〕来把要改变的内容套用到下方面板。

你也可以修改下方面板的文字内容,改好后按工具列的储存钮(磁盘的图标)即可。

附带一提,你可以从VSSExplorer显示的画面看出一个档案是否被多人取出修改。

如下图的test.txt,在文件名称的左边有两个勾勾的图示,而User栏则显示最后一次checkout的使用者名称,后面加上"..."。

值得采用吗?

万一VSS无法自动合并,手动合并似乎有点麻烦,这样做值得吗?

还是干脆不允许多重checkouts?

笔者的建议是,只有当你真正碰到的时候,才把这个功能打开。

举例来说,在一个项目里面,可能会有一些共享的程序代码,这些共享的程序代码平时可能由一个人维护,例如:

AppUtils.cpp;但是也有可能别的程序设计师写了一些共享的函式,为了避免共享的程序代码散乱在太多档案里面,于是他希望把自己写的共享函式也放到AppUtils.cpp里面,于是便形成了多人要维护同一个档案的情形,此时就很适合使用多重checkouts了,因为虽然改的是同一个档案,各人要改的部分会彼此冲突的情况不多,此时VSS将可以自动处理90%以上的合并。

3.2档案的共享(Share)与分枝(Branch)

你可以指定一个档案让多个项目共享,方法是在VSSExplorer的项目面板中,挑选要共享的目录,注意不是分享出去的目录,而是指你现在想要使用别人的共享档案的那个项目目录,在该目录上点右键,再点选〔Share〕,这时候出现的窗口才是要挑选来源的共享档案,在窗口中选好要共享的档案,然后按〔Share〕即可。

参考下图:

档案4.设定成共享之后,当你对共享档案checkout,不管是提供共享档案的来源项目,还是使用这些共享档案的项目,其目录下都会有一份共享档案的拷贝,但是VSS保证这些档案内容都会一致,VSS透过Share的设定来维护各项目间共享档案的连结,让共享档案维持一个版本。

你也可以透过分枝(Branch)的功能来切断共享档案的连结,这意味着你不要再跟别人共享这个档案了,而希望保有独立发展的版本。

做法是在VSSExplorer的右边面板中,点选要切断共享关系的档案,然后点选〔SourceSafe\Branch...〕,接着会出现窗口请你确认,按〔OK〕钮即可。

切断共享关系之后

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1