2006年12月23日土曜日

VSS(Visual SourceSafe)使用入门

微软产品的安装一向简单,只有少数选项需要说明一下。安装类型包括“SHARED DATABASE SERVER”、“CUSTOM”和“STAND-ALONE”三种,第一种共享数据库服务器是完全安装,第二种定制安装的默认值也是完全安装,因为这个软件本来就很小,所以选前两种就行了,第三种单机安装就是单机版。

此软件的安装与标准的Windows程序略有不同,安装过程中检查已经安装的旧产品的方式是搜索整个文件系统,因此可能将同一电脑上的其他操作系统上安装的VSS检查出来,此时不必理睬安装程序的警告,将安装位置改到合适的地方继续安装就行了。安装过程可能还会提示数据库版本的问题,新的V6数据库V5软件不能访问,一般来说总是应该使用更新版本的数据库,再说升级VSS客户端软件是很容易的。

安装完成以后得到一个VSS目录,这个目录包含了一切:程序文件、配置文件、默认数据库、用于网络安装的客户端安装程序。如果这个默认数据库需要在网络上共享(一般总是需要的)则将这个VSS目录共享,并给相关人员设置完全访问的权限(即使这个用户只是VSS数据库的只读用户)。注意,目录的安全属性与共享权限不同,“Program Files”目录下子目录和文件的访问权限可能是受限制的,所有VSS用户在VSS目录的安全属性也必须是完全访问的。

这样修改安全属性:在VSS目录上点右键,选择“属性”,切换到“安全”属性页,设置权限,然后点下面的“高级”按钮,选中高级里面最下面的“重置所有子对象的权限并允许传播可继承权限”选择框,点“确定”退出高级,再点确定使修改生效。

安全提示:因为VSS数据库要在网络上完全共享,所以网络要安全,如果有删除所有文件的病毒就会出大麻烦,一般的感染特定文件类型的病毒危害小一些,无论如何,安全最重要。
节 1.03 数据库管理
(a) 介绍

VSS的数据库是一个目录,目录下包含若干个文件和目录,“srcsafe.ini”是关键文件,此文件用来标识一个VSS数据库。VSS客户端打开一个数据库的方式就是找到这个文件,所以共享数据库的方式就是简单地共享包含这个文件的目录。另外一个文件“users.txt”记录用户信息。还有三个目录:“data”、“temp”和“users”,分别存放数据库的内容、临时的信息和用户的相关数据。安装VSS软件的目录除了上面所说的VSS数据库的文件外还包含几个目录存放VSS程序,根据安装类型不同可能还包括网络客户端安装程序。

VSS不存在服务程序,一切都通过文件操作进行。最简单的备份方式、也是最可靠、绝不会出错的方式就是备份整个目录。另一个方式是定期取得数据库里所有文件的最新版本,只对最新版本进行备份。为了避免保存大量不必要的版本,可以对每个项目建立一个VSS数据库,这个数据库保存所有的变更(包括开发过程中的大量尝试性的变更),而公司级的受控库只保存正规的版本。

安装VSS软件的时候可能已经安装了一个数据库,那么这个数据库就是默认的数据库,数据库都用位置命名,目录名字或者网络位置的名字(名字其实是无关紧要的,数据库的实际位置才是关键)。

VSS软件在程序菜单中包含四个程序,其中两个——分析并修复数据库、分析数据库——都是很少用的,另外两个VSS Admin程序(Visual SourceSafe 6.0 Admin)和VSS 浏览器(Microsoft Visual SourceSafe 6.0)是最常用的。另外还有一些其他程序并未出现在程序菜单,需要阅读帮助文件挖掘,VSS支持命令行方式,有编程接口(不然开发工具是如何与VSS整合的)。

每个数据库初始拥有两个用户:“Admin”和“Guest”,都拥有全部权限并且没有口令(因为Admin没有口令是不安全的,所以初次打开Admin程序会得到一个安全警告)。Admin用户是超级用户并且无法被删除也不能修改权限。Admin口令是最重要的,因为默认情况下VSS程序会用上一次的用户名和口令登录VSS,所以一般用户忘记口令是很常见的,这时候就需要Admin用户使用Admin程序重新设定用户的口令了。

VSS以树形目录的方式组织内容,每个目录称之为一个项目(Project,这是一个重要概念),每个子目录也同样是一个项目,如果使用了递归选项则对一个项目的操作会包含下面的所有子项目,对一个项目的设定会影响子项目,子项目的设定会覆盖继承自父项目的设定(但具体每个操作的效果要看具体的操作,并非没有特例)。简单地说,项目就是虚拟目录(并且和外部实际目录对应)。
(b) Visual SourceSafe 6.0 Admin程序

打开Admin程序要求输入口令,但并不总是这样,VSS会保存上次使用的数据库和用户名、口令,这样下一次使用VSS就不需要输入口令,进入VSS的Admin或浏览器程序以后可以再改变数据库。Admin程序的界面如下:

基本上这是个相当简单的界面,功能都通过菜单实现。界面的主要部分用来显示当前的用户列表、权限和登录状态,不支持右键,仅支持双击,双击可以修改用户的名字和权限。权限很简单,默认为“Read-Write”,可以修改为“Read-Only”,显然这不会使我们满足,我们需要的是“Project Rights”,对每个目录给每个用户特定的权限,这些权限包括只读、写入、添加删除重命名、销毁,除了不能控制到文件,这基本上满足了我们的要求。具体操作后面会介绍,相当简单。
(c) 打开指定的数据库

当前打开的数据库也许并不是需要的,菜单“Users”下的第一个菜单“Open SourceSafe Database”用来打开一个不同的数据库,打开新数据库会关闭原来的数据库。



图中的“Open”按钮不可用是因为temp数据库正是现在打开的,选择一个不同的数据库,可以用“Open”按钮打开它。“Browse”按钮用来在系统中寻找一个数据库,寻找的目标就是srcsafe.ini文件,寻找的位置范围就是一般Windows查找文件的范围,从桌面开始,包括了“我的电脑”和“网上邻居”。“Remove”用来从列表中删除一个数据库信息,并非删除数据库。下面的“Username”不可编辑是因为Admin程序只允许Admin用户使用,如果是在VSS浏览器下执行这个功能则可以编辑。
(d) 创建新数据库

很多时候我们并不喜欢默认的数据库,可能是因为它的安装位置太深了。我们也可能为了不同的目的创建几个不同的数据库。创建数据库使用菜单“Tools”下的“Create Database”,仅仅需要选择一个存放数据库的目录即可(不会在这个目录下创建“VSS”目录,所有文件和目录直接放在选择的目录下,因此这个目录应该是新建的专门用来放VSS数据库的)。新创建的数据库的目录里面只有数据库,不包含VSS程序。
(e) 用户管理

用户管理无非是添加、删除、编辑、修改口令,都在“Users”菜单下,一目了然。所有能设定的不过是用户名、口令和是否只有只读权限而已。最重要的功能是“Project Rights”,下面介绍。
(f) 使用项目权限Project Rights

项目权限是针对每个项目的用户权力。使用项目权限首先要启用项目权限,在菜单“Tools”下的“Options”里面的“Project Rights”选项卡上,选中最上面的“Enable Rights and Assignments Commands”选择框即可。

新用户的默认权限建议只给一个“Read”就行了。然后确定。这时“Tools”下面原来不可以使用的菜单全部可以使用了。

现在可以给项目设定权限了。打开菜单“Tools”下面的“Project Rights”,显示如下窗口:

在左边选择项目,右边上面选择一个用户,右边下面设定用户的权限,如果只有“Read”权限可以选择的话说明这个用户是“Read-Only”,在编辑用户那里去掉只读就可以了。因为可以对每一级每个目录单独设定权限,因此很容易疏忽。设定完权限后最好再逐级检查一遍看有没有发生错误,有可能发生这样的情形:试图通过对级别较高的项目的权限的禁止阻止用户访问整个项目,然而对子项目用户有单独设定的访问许可,因此对子项目实际上并未禁止访问。

四种访问权限含义如下:

“Read”,读

“Check Out/Check In”,签入/签出,也就是写

“Add/Rename/Delete”,添加/重命名/删除,删除的文件仍然存储在数据库中,可以被恢复,直到被销毁

“Destory”,销毁,销毁的文件就再也找不回来了,这个是会造成无法挽回的后果的权力,通常不应该赋予任何一个一般用户,仅保留给管理员。

这四种权力逐个包含,选中下面一个上面所有的会被自动选中,取消上面一个下面所有都回被自动取消。

如果一个用户在当前选择的项目上什么权力都没有就不会显示在用户列表中,必须用“Add User”添加进来,“Delete User”则删除用户在当前项目的所有权力并把用户从列表中清除。

菜单“Tools”下的“Rights Assignments for User”则提供了对单一用户的项目权力指派。功能相同,视图不同。
节 1.04 使用VSS浏览器
(a) 借助VSS开发项目

在程序菜单VSS的浏览器叫做“Microsoft Visual SourceSafe 6.0”,用来操作VSS。很多开发工具可以直接操作VSS,因此不需要使用这个工具。另外有些开发工具不支持和VSS浏览器混用(比如MS Visual Studio 里面的InterDev),如果混用,开发工具可能不能正确地处理文件,因此如果项目在使用开发工具整合的VSS功能,建议不要跳过开发工具直接使用VSS浏览器。

如果项目采用VSS作为版本管理,那么被认可的代码(以及其它文档)就应当是VSS数据库里面的最新版本(而不是某个人的版本)。每天早上,每个人都从VSS中取得(叫做Get)最新版本放在自己的工作目录下(这保证每个人用的都是最新的,并同时在每个人的电脑上做了备份),然后获得特定文件的修改权(叫做Check Out,签出),然后开始编辑,编辑完成之后放回并放弃修改权(叫做Check In,签入),签入以后其他人再去取得新版本的时候就会取得这个签入的版本了。

VSS可以记录每个变化,每个文件的每次签入都产生一个新版本,可以单独取得旧版本。VSS可以给整个项目贴上版本标签(Label Version),比如“beta 2”,这个版本是用户定义的版本(与VSS自身对每次签入的自动编号不同),可以针对版本标签取得版本,一个标签标识的是做标签之前签入的最新版本。

VSS可以方便地比较目录或文件,可以是VSS里的不同版本或不同项目互相比较,也可以是VSS和VSS之外的目录或文件比较,也可以是与VSS无关的外部文件或目录的相互比较,比较的结果包括相同的、不同的、增加的、删除的,对于文本文件可以直接可视化地显示差异。

除非Admin用户专门将数据库配置为允许多人签出,否则不会有两个人同时修改一个文件的情况发生(如果多人签出,签入时会要求首先合并,确认合并完成才能签入)。尽管提供了多人签出、分支开发、版本合并的功能,然而实际的合并操作仍然完全依靠脑力进行,因为工具只能指出两个版本有这些差异,但是这些差异如何合并却完全依赖脑力判断,绝非简单地合并为一个文件那么容易。因此很多人总是尽可能地避免多人签出或分支开发。

0 件のコメント: