VSS使用详解释

节 1.01      前言... 2

节 1.02      安装... 2

节 1.03      数据库管理... 3

(a)       介绍... 3

(b)      Visual SourceSafe 6.0 Admin程序... 3

(c)      打开指定的数据库... 4

(d)      创建新数据库... 5

(e)       用户管理... 5

(f)       使用项目权限Project Rights. 5

节 1.04      使用VSS浏览器... 7

(a)       借助VSS开发项目... 7

(b)      VSS浏览器... 8

节 1.05      项目操作... 9

(a)       添加项目和文件... 9

(b)      设置项目工作路径... 9

(c)      取得项目最新版本... 10

(d)      签出项目Check Out10

(e)       签入项目Check In. 10

(f)       撤销签出Undo Check Out11

(g)      显示历史记录Show History. 11

(h)      显示差异Show Differences. 13

(i)    设置版本标签Label14

(j)    取得历史版本... 14

节 1.06      文件操作... 14

(a)       取得最新版本... 14

(b)      签出... 14

(c)      签入... 14

(d)      撤销签出... 14

(e)       查看和编辑(View,Edit)... 15

(f)       显示文件历史Show History. 15

(g)      文件比较Show Differences. 16

(h)      文件属性... 17

节 1.07      与开发工具整合... 18

节 1.08      已知的问题... 18

(a)       UNICODE、UTF-8的问题... 18

(b)      InterDev开发Web应用的问题... 19

(c)      文件比较的问题... 19

(d)      签入无效的问题(与CuteFTP有关的)... 19

节 1.09      Tip. 19

节 1.01           前言

       本文件是作者本人使用VSS产生的一些心得、经验之类的记录,并非严肃的操作手册。就我个人体会而言,严谨详细的操作手册通常让人产生畏惧感并由此排斥这个软件。如果只通过简单的几步引导就能获得常用的结果则会让人产生很大的满足感并对这个软件产生很高的评价(我试图接近这个目标)。很幸运,微软的产品总是比较容易入门(并因此招致竞争对手的嫉妒和指责)。微软公司的大多数项目并非用VSS管理(他们使用更强大的版本控制系统),然而很多管理严格的公司(真正的CMM3)却也在使用VSS进行管理,他们的VSS数据可以累积到好几个G。这些公司并非仅仅使用VSS管理源代码,他们用VSS管理所有受控的文件,包括组织级文件、项目文档、会议记录、评审报告等等,总之一句话,所有重要的东西和他们的历史都可以在VSS中获得。很多程序员在体会了版本控制系统的好处以后开始用版本控制系统管理自己的所有文件,从此不用担心自己遗忘什么或者因为偶然的失误失去什么重要的东西,这是一种幸福的感觉。

Visual SourceSafe 是一个源代码控制系统,可以保存文件的不同版本,可以比较文件的差别,可以控制不同的人对同一文件的修改。就功能而言是同类产品中比较弱的,但满足了基本的需要并且非常容易使用,因此获得了非常广泛的使用。VSS目前的最高版本是6.0D(6.0+SP6= 6.0C),微软公司似乎没有开发VSS.net的计划,因此我们不得不继续忍受Visual Studio 98风格的界面。

所谓VSS服务器指的是存放VSS数据库的计算机,客户端是访问VSS数据库的计算机,而VSS数据库是一个共享的目录,仅此而已(因此并不存在服务器程序)。

节 1.02           安装

微软产品的安装一向简单,只有少数选项需要说明一下。安装类型包括“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里的不同版本或不同项目互相比较,也可以是VSSVSS之外的目录或文件比较,也可以是与VSS无关的外部文件或目录的相互比较,比较的结果包括相同的、不同的、增加的、删除的,对于文本文件可以直接可视化地显示差异。

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

(b)            VSS浏览器

VSS浏览器拥有如下界面,工具栏和右键菜单很完善,使用起来非常方便。

界面下边用来输出一些没用的信息,不必管它。左边是项目列表,看起来就是一个目录树,根用“$/”表示,可以手工添加项目,然后往项目里面添加文件,也可以一次把一个目录(可以递归包含子目录)添加进来成为一个项目。右边是项目下的文件,不包括子项目,显示的信息包括签出的用户的名字和最后一个版本的时间以及签出位置。右边上面两个文本是当前的项目名称和项目的工作路径(工作路径是项目默认的本地目录)

对项目可做的操作主要包括:创建项目、删除项目、添加项目或文件、设置项目工作路径、设置版本标签、取得最新(最后)版本、签出、签入、撤销签出、查看历史、比较差异、查看属性(没什么属性,关键是这里可以恢复删除的文件)。

对文件可做的操作主要包括:查看、编辑、签出、签入、撤销签出、取得最新(最后)版本、查看历史、比较差异、删除、重命名、查看属性(文件类型很重要,二进制文件无法比较细节,只能比较相同或不同,文本文件则可以按行比较,有时VSS不能正确识别文件类型,需要手工修改)。

节 1.05           项目操作

(a)            添加项目和文件

选中项目树的节点,然后点右键选择“Create Project”或者工具栏上的第一个(也许你的版本不是第一个)按钮“Create Project”或者菜单“File”下的“Create Project”可以在选中的节点下创建一个新项目(看起来就是创建一个子目录,事实上也没什么差别),需要输入的是项目的名字,支持中文,有兴趣的话顺便把注释也填上,省得以后忘了这个项目是干什么的。

很多时候可以通过添加一个目录以及目录下的所有内容来创建项目。选择“Add Files”命令可以添加项目或文件。这个命令的名字实际上并不准确,它既可以添加文件又可以添加项目。

选择左边的文件然后点“Add”按钮会把这个文件添加到当前项目,选择右边的目录点“Add”按钮则会把目录添加到项目(也就是成为一个子项目,存在一个选项让你把整个目录全部添加进来)。有时候你会注意到左边不会显示任何文件或者只显示了一小部分文件,这是因为同名文件已经在项目中存在,不可能添加同名文件进来的缘故。如果选择的是项目,弹出的“Add”对话框不仅提供输入注释的地方,还在下面提供了一个选项:递归 “Recursive”,这个选项在很多地方都有,用起来很方便。选择这个选项就不只是把当前目录和下面的文件全部添加进来,而且把子目录及子目录下的内容也全部添加进来。曾经有人向作者抱怨VSS不好用,每个子目录都需要一个一个创建,很麻烦,嘿嘿,他只是英文不太好又不愿意查字典而已。

(b)            设置项目工作路径

为项目设置一个对应的本地目录,用来取得版本进行编辑。只需要为项目(工程意义的项目,而不是VSS的项目)的总入口的VSS项目设置一个工作目录既可,获得版本时下面的所有VSS子项目自动作为一个子目录得到。如果子项目设置了独立的工作路径,那么这个工作路径仅当对在这个子项目上执行操作的时候才会有用。

(c)            取得项目最新版本

这个命令通常从项目的右键菜单获得,名为“Get Last Version”。

目标位置默认是项目的工作路径,但可以更改。“Recursive”递归,若选中可以得到整个项目树,否则只得到项目下的文件而不包含子项目。“Make writeable”,默认取得的文件是只读的(Check Out才是获得可编辑的版本的合理方式),若选中则不设置只读属性。

(d)            签出项目Check Out

一次性签出项目下的所有文件,适合一个项目(子项目)下所有文件都归一个开发人员负责的情况。

若选择递归则连子目录下的东西一起签出。“Don`t get local copy”,不取得本地版本,这样不会覆盖本地已有的版本(也许本地版本包含着你一个通宵的勤苦工作,当然不能随便覆盖)。

签出的文件没有只读属性,可以修改。过程上应该首先签出才有权修改文件,签入以后修改才会被其他人认可。如果文件已经被签出,就应该等待或者去跟签出者协商,绝不应该在没有签出的情况下擅自修改本地文件。任何人都应该服从这一点,否则项目版本将仍然陷入混乱。

(e)            签入项目Check In

一次性签入一批文件。不签入别人看不到你的修改。

       有递归选项,可以连子目录一起签入。“Keep checked out”,保持签出状态,在频繁修改代码时经常会这样做,保存一个中间版本然后立即继续修改。“Remove local copy”,删除本地版本,这个主意不好,万一VSS服务器硬盘坏了不就完蛋了,不过你也许有别的方面的考虑。

(f)              撤销签出Undo Check Out

如果后悔了,不想修改文件,可以撤销签出。

      

       有递归选项。还要选择本地版本的处理方式,可以用VSS里面的版本覆盖,也可以留着不管它,还可以删除,要仔细斟酌。

(g)            显示历史记录Show History

查看项目的所有历史,包括增加文件、删除文件、签入文件(文件有更改)。

      

可选项包括递归(包括子目录的历史)、包括文件的历史、包括版本标签、只包含标签(会禁止文件历史)、从什么时候开始、到什么时候(时间格式大概按照操作系统来的,至少YYYY-MM-DD是合法的时间格式)、哪个用户。默认没有递归选项,多数时候需要加上这个选项,其余选项不常用。显示的历史记录如下图所示:

按照时间顺序列出了所有历史,可以注意到文件file1.cpp在“Added”之后有两次签入,这两次签入之间有一个Label“Labeled‘v1’”,Label对应项目下的所有文件,除非子项目用一个同名的Label覆盖(这种情形应当避免)。这个窗口提供了很重要的项目管理功能。

“View”,查看选中的文件的内容,就是查看以前版本的内容。

“Details”,查看历史记录的详细信息,有一些内容是可以编辑的。清除Label的内容将导致Label被删除,没有独立的删除Label命令,这就是删除Label的方法。

“Get”,取得选中的文件的历史版本或者取得选中的Label版本(label之前的最新版),会提示取得版本放到哪里去,对项目也有递归选项。能够取得任何时候的历史版本,这个功能才是版本控制系统存在的价值。

“Check Out”,签出文件或项目。

“Share”,共享。两个项目可以共享一个文件,两边看起来各自有一份,但其实是同一份,一次只能由一边签出。通常用菜单“SourceSafe”下的命令执行,共享以后可以断开搞分支开发。

“Report”,报告历史,可以报告到打印机、剪贴板或者文件,可以包含文件历史和版本差异。

(h)            显示差异Show Differences

这也是关键功能。可以比较两个项目或目录的差异,包括一边有而另一边没有的文件和内容不同的文件。

默认情况下比较的是项目和项目的工作目录的差异,以“$”开头的是VSS项目,但两个都可以用“Browse”改变,所以实际上可以比较任何VSS和目录的差异。下面四个选项全选是最全面的,显示所有的相同和不同。递归选项选中可以包含子项目或子目录。下图是比较结果:

存在下列差异:

demo.cpp在项目中存在,但在工作目录不存在,蓝色显示。

file1.cpp有差异,图标到有红色标记。

file2.txt没有差异。

file1.cpp.bak和“新建 文本文档.txt”项目里面没有,绿色显示。

对于这些差异可以用右键菜单分别处理(注意鼠标点在哪边的文件上可能是不同的,作者的习惯是在这里只查看差异和添加文件,从不在这里删除)。

对于项目里面有但工作目录没有的,可以从项目里删除,也可以取得最新版本或签出。

对于项目里面没有的,添加到项目里面,或者从目录里删掉(真的删除了文件,而不是仅仅从列表删除)。

对于有差异的,可以查看差异(产生一个文件的差异比较,这是很常用的功能)签入或撤销签出。

对于没有差异的,可以删除或签出。

(i)               设置版本标签Label

给项目做一个版本号,这个标签代表的版本是做这个标签的时间之前的最新版本。一般在管理上要求做版本标签(有时称之为封版)之前所有文件都已签入(VSS并不要求这样),以后就可以取得标签版本。如果标签搞错了,可以在项目历史里面查看标签细节,然后将标签名称修改,如果要撤销标签就把标签名称清空。

(j)              取得历史版本

因为这是版本控制的标志功能之一,所以重复一次。

取得项目历史版本,在项目上查看历史,找到合适的Label,选择“Get”命令。

取得文件历史版本,在项目或文件上查看历史,找到合适的版本,选择“Get”命令。

节 1.06           文件操作

(a)            取得最新版本

Get Last Version,VSS数据库里的最后一个版本会放到指定的目录下,默认是项目的工作目录。

(b)            签出

Check Out,然后就可以修改。

(c)            签入

Check In,然后别人取得最新版本就可以看到你的修改。

(d)            撤销签出

       Undo Check Out,放弃修改权。对本地文件有三种处理方式:用VSS版本覆盖、保留、删除,请谨慎选择。

(e)            查看和编辑(View,Edit

VSS提供整合的查看、编辑能力(当然通常我们是在专门的开发环境中工作的)。这两个功能有同样的界面,只是默认操作不同,View的默认操作是编辑,Edit的默认操作是签出并编辑(一个典型的糟糕设计)。

不管从哪个命令进入都可以改变“Do you want to”选项进入另外一个命令。查看或编辑的工具可以是VSS内置程序或者操作系统注册的程序(如果没有注册的程序则该项不可用)或者手工选择一个不同的程序。

(f)              显示文件历史Show History

比项目的显示历史少一点选项,但显示结果有不同的命令可用。

       这里每个文件版本都获得了一个版本号“Version”,是从1开始的自然数序号,每次签入都产生一个新版本(但没有修改的签入不产生新版本)。注意到有一个版本标签“v 1”是来自项目的版本标签。

       这里多出几个不同的命令可用:

       “Diff”,比较差异,默认跟工作目录的版本比较,但选中两个不同的版本(用Ctrl键)也可以进行两个历史版本之间的比较,比较的结果实可视化的,非常直观(仅限于文本文件,对二进制文件只能报告相同或不同)。

       “Pin”,订住,被订住的版本成为最新版,别人取最新版本只能取得被订住的版本,而不影响签出者修改文件、签入、签出。只能订住还没有被签出的文件。订住可以避免其他开发者得到一个不可用的中间版本。

       “Rallback”,回滚,选中的版本之后的版本都会被删除,选中的版本成为最新版。出于对历史的尊重,先签出,然后取得历史版本覆盖到工作目录,然后签入,这也许是更好的回滚方式,毕竟一个糟糕的版本也是一个版本。

(g)            文件比较Show Differences

重要功能。可以直接从右键菜单进入,也可以从文件历史结果窗口进入,还可以从项目差异结果进入。

比较的两个文件都可以改变到VSS数据库里的一个文件或者一个普通文件,VSS数据库的文件还可以带上VSS的版本号。下面的选项一般不用修改,格式如果选择为SourceSafe或Unix,就会使用原始方式显示结果,很不爽,还是Visual比较好。结果如下图:

原来的文件第三行被删除,文件最后又增加几行,一目了然,点工具栏上的向上向下箭头可以查看下一个上一个差异。

(h)            文件属性

文件属性首要关心就是文件类型,Text文件可以按行存储,按行比较,Binary文件则只能按照原始格式存储,每个版本都是一个完整文件,占用很大空间,而且只能比较出相同或不同。可以在文件属性窗口改变这个属性。如果某个文件VSS不能正确存储,就只能改为二进制格式。有时候VSS自动判断出错,也要逐个修改文件属性。

其他几项暂时没什么可说的,需要用的时候自然就会了。

节 1.07           与开发工具整合

很多开发工具都整合了VSS支持,此时最好只用开发工作操作。开发工具对VSS的操作本质上与VSS浏览器是一样的,不过是签入签出而已。只是一定不要忘了及时签入,否则你的工作是能被别人看到的。

节 1.08           已知的问题

(a)            UNICODE、UTF-8的问题

ANSI格式没有问题,UTF-16、UTF-8有问题,不能正确识别,存储的文件会错乱。微软承认麻烦很大,详细的说明MSDN里面可以查到,下面的斜体文字引自MSDN文档“ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vsintro7/html/vxtsksavingfileswithencoding.htm”

为了方便代码在特定语言和特定平台上进行显示,可将文件与特定字符编码建立关联。

如果使用 Visual SourceSafe 以 ANSI、UTF8 或 Unicode 格式存储文件,请注意它们各自的以下限制。

  • ANSI 文件只允许使用当前代码页中支持的字符,这会限制国际使用。
  • Unicode 文件无法使用共享签出、差异检查或合并功能,原因是此类文件是作为二进制文件处理的。可在国际文件中使用此格式。
  • UTF8 文件在 Visual SourceSafe 中不能安全地工作,因为在签入、签出、差异检查和合并过程中该文件会被更改,而这会导致 UTF8 文件编辑器出现问题。

(b)            InterDev开发Web应用的问题

不可绕过InterDev直接使用VSS浏览器签入签出,会死人的。InterDev实际上借助IIS访问VSS,所以会有这个问题。很幸运,vs.net里面已经没有InterDev了。

(c)            文件比较的问题

有时候会报告文件有差异但却看不出差别,也许是换行符的差异,也许不是,如果执行签入会发现并没有签入(这意味着签入程序并不认为文件有差别)。如果是 6.0C,这种情况会非常多,6.0D则好很多,基本上不会出现。因为是C版大量使用所以特别提到这个问题。顺便说一下,C版和D版可以混用,没发现什么问题。

(d)            签入无效的问题(与CuteFTP有关的)

有时候看起来签入成功但实际上并未签入。如果文件是用CuteFTP下载到本地的,那么可能是因为CuteFTP显示FTP文件的窗口需要刷新。推测可能是CutFTP下载文件时使用旧的文件信息,VSS签入时发现文件是旧的就认为不是新版本不需要签入。

节 1.09           Tip

1 有时会出现某个文件无权 GET 的问题,重起 SERVER 端机器即可解决

2 有一次,不知因何原因(可能是病毒),Sourcesafe 的数据库访问权限变了,需要在 Windows 页面重新分配所有权

3 建议经常做 SourceSafe 备份,以便文件丢失时(Sourcesafe 大了会丢失),可以挽回,备份采用 WINDOWS 的自动备份功能即可(管理工具中有一个备份工具,排定一个计划,即可自动备份)

4 了解 sourcesafe 目录结构的方法如下:将所有内容 GET 出来, 用 TREE>*.txt(DOS命令),即可将该目录结构存储到一个文本文件中

 

 

 

 

 

 

 

 

VSS概述 Microsoft Visual SourceSafe是美国微软公司出品的版本控制系统,简称VSS。它提供了还原点和并行协作功能,从而使应用程序开发组织能够同时处理软件的多个版本。该版本控制系统引入了签入和签出模型,按照该模型,单个开发人员可以签出文件,进行修改,然后重新签入该文件。当文件被签出后,其他开发人员通常无法对该文件进行更改。通过源代码管理系统,开发人员还能够回滚或撤消任何随后产生问题的更改。 作为一种版本控制系统,Visual SourceSafe 能够: • 防止用户无意中丢失文件。 • 允许回溯到以前版本的文件。 • 允许分支、共享、合并和管理文件版本。 • 跟踪整个项目的版本。 • 跟踪模块化代码(一个由多个项目重用或共享的文件)。 独立开发人员和小型开发团队已经发现,版本控制能够使他们保持内心的宁静并提高工作效率,从而使他们受益。Visual SourceSafe 是一种版本控制产品,主要致力于维护文件更改历史记录、审核跟踪日志以及对源代码文件进行灾难恢复。它在以下场合下最为有效:团队的规模较小,各个成员之间的地理距离比较近,通常在高度可靠的环境中通过高速、低延迟的局域网 (LAN) 工作,并且共享的开发资产不大可能超过 4 GB。Visual SourceSafe 是一种仅用于客户端的文件服务器应用程序,不需要服务器端处理或代码执行。 1.1 VSS中的文件 当你要修改某个文档时,需要先从数据库中将它签出(check out),或者告诉VSS你要编辑该文档。VSS会将该文档的副本从数据库中拿到你的工作文件夹(working folder)中,你就可以修改你的文档了。如果其他用户再想对同一文档进行修改,VSS会产生一个信息,告诉他,该文档已被签出(check out),从而避免多人同时修改文档,以保证文档的安全性。 当你完成修改之后,需要将文档 签入(check in)VSS。这个操作从你的工作文件夹(working folder)中复制被你修改的文档,并将它放回VSS数据库,以便其他用户能够及时看到文档的改动。VSS能够保存文档的所有改动,并显示最新版本,同时早期版本也会被跟踪记录下来。VSS对反增量技术的运用,仅需要用很少的磁盘空间就能使得用户获取文档的所有版本。 如果你没有修改文档,你可以执行撤消签出(undo check out)命令,文档将被保存为被签出(check out)之前的状态。 如果你只需读取某一文档而并不需要编辑它,你可以执行取出(get)命令,将文档放入你的工作文件夹,再选择查看文档(view),来查看你的文档的最新版本。 1.2 VSS中的项目 项目(project)是指用户存储在VSS数据库中的所有文件(file)的集合。用户可以在项目之间或项目内部实现文件的添加(add)、删除(delete)、编辑(edit)、共享(share)。一个“项目(project)”在很大程度上类似于一个普通系统的的文件夹,不同的是它能更好地支持文件合并(merge)、跟踪(archive)和版本控制(version control)功能。 文件保存在VSS数据库中的项目(project)里。你无须管理存储在VSS 中的文件正本,除非你要检查或与其它拷贝进行比较。 VSS为每一位用户提供了一份备份文件放入工作文件夹(working folder),供用户对文件进行查看与编辑。尽管没有工作文件夹也可以查看文件,但要想真正实现对文档的处理,必须建立工作文件夹。 1.3 VSS的版本控制功能 VSS能够保存文件的多个版本,包括文件版本之间每一处微小的变动。版本控制有以下几方面的内容: l 组内合作——在缺省的情况下,一般一个文件在某一时间只允许一个用户对其进行修改,这样可以防止文件意外地被其他用户改动或者覆盖。但管理员可以改动这种缺省的设置,允许文件多层签出。这种设置也能防止过多的、不必要的改动。 l 版本追踪——VSS能够对源代码和其他文件进行存储和早期版本的追踪,从而实现重建文件早期版本等有关功能。 l 跨平台开发——在多平台开发的情况下,版本追踪用于维护核心代码。 l 代码的再使用—— 追踪程序基准使得代码可重用。 1.4 文件的拆分和共享 在VSS中可以实现一个文件被多个项目共享(share)。在一个项目中对文件的改动可以自动反映到其他共享的项目中去。这正提倡了代码重用。在file菜单中的properties中,点击link,可以查看某一文件的共享情况。 拆分(branch)是将文件从原来共享的项目中分离出来的过程。它使得VSS可以实现从不同的路径追踪文件。 注:在其他版本控制系统中,分支是通过跟踪版本号来实现的。例如:版本“2.3.9.2”是版本2.3的第二个修订版本的第九个分支。而VSS通过明显不同的项目名称实现对文件分支的跟踪。 拆分文件就断开了共享连接,使得本项目中的文件与其他原来共享的项目无关。对此文件的修改将不会再反映到其他项目上。拆分是这样被建立的:两个文件以前有着共同的历史记录,从实现拆分开始,他们的历史记录将被VSS分别追踪。 拆分文件之后,link按纽将不再显示已断开的连接,但你可以用path(file菜单中的properties项)按纽浏览拆分的历史记录。 共享(share)文件就是在多个项目间建立文件的连接。拆分(branch)文件就是在项目之间建立了不同的文件路径。 1.5 工作文件夹(working folder) VSS是存储和管理文件的工具,但是编辑和编译文件必须在VSS指定文件夹中进行。这个文件夹叫工作文件夹,它可以是现存的文件夹,也可以是VSS新建的文件夹。VSS浏览器在文件列表上方显示了文件的工作文件夹的路径。 在VSS系统中,工作文件夹才是你真正用于处理文档的地方。当你要编辑或修改某个文档时,必须对文档实施check out 操作(详见3.3.5修改和编辑文件),VSS将该文档从项目中拷贝出来,放入你的工作文件夹。当你修改完毕并check in 文件之后,VSS又将文件重新拷贝到数据库中以记录你的修改。 一旦你将文件签出,VSS就开始在你的本地机上创建并管理你的工作文件夹。 每一个用户、每一个项目或每一台微机都可以有自己的工作文件夹。如果Joe在项目$/SpreadSheet和$/WordProcessor上工作,他就有相应的2个不同的工作文件夹。如果Hanna在同样的项目上工作,对于每一个项目她又有自己的工作文件夹。 当你为某个项目设置了工作文件夹,你可以用它来放置你该项目中包括子项目再内的所 VSS服务器端安装 Visual SourceSafe 管理员通常将 Visual SourceSafe 安装到网络服务器上,然后将您的名称添加到数据库用户列表中。只需运行安装程序,然后选择某个选项以安装 Visual SourceSafe。 1 有三个 Visual SourceSafe 安装选项: 1)数据库服务器 将数据库和所需的软件安装到网络服务器上(系统管理员使用该选项)。然后,各个用户使用 Netsetup 从网络服务器安装 Visual SourceSafe 客户程序。 2)自定义 允许您选择要安装的组件。 3)独立 安装创建和访问您的计算机上专用数据库所需的组件。另外,还可以连接到网络服务器上的现有数据库中。 2 指派用户权限 在可以访问数据库之前,必须指派相应的权限。另外,还可以将用户权限指派给其他要共享您的数据库中文件的小组成员。请 Visual SourceSafe 系统管理员添加、更改或删除数据库的用户权限和密码。 3 连接到 Visual SourceSafe 数据库 从 Visual SourceSafe 应用程序连接到 Visual SourceSafe 数据库,启动 Visual SourceSafe 应用程序。 从“文件”菜单中,单击“打开 SourceSafe 数据库”,然后在列表框中选择一个数据库。 可以使用此命令从其他人已经创建的 Visual SourceSafe 项目中选择一个现有的数据库。这样您就可以使用由他人建立的多开发人员项目了。 2 VSS的客户端安装 从网络安装VSS客户端 1)打开本地计算机的“网上邻居”属性对话框; 2)点击“配置”按纽; 3)将“MICROSOFT网络用户”的属性设置为:登录到WINDOWS NT 域,域名为PLANNING; 4)添加TCP/IP、NETBEUI、IPX/SPX协议; 5)重新启动计算机,登录“planning”域; 注:管理员为每位NT用户设置的登录密码为“111”,用户在第一次登录时,计算机会提示用户修改密码。 6)从“网上邻居”的“planning”域中查找服务器“VSSDATA”; 7)打开共享的“VSS”文件夹并双击“NETSETUP”; 8)按照安装程序的提示开始安装。 3 VSS的基本使用操作 3.1 登录VSS 点击VSS图标或从程序菜单中运行Visual SourceSafe 6.0,即可打开VSS浏览器。 如果用户登录的VSS密码和登录PLANNING域的密码是一致的,系统将不再提示输入进入VSS数据库的密码;如果用户为VSS设置的密码与登录PLANNING域的密码不同,系统将提示用户输入VSS的登录密码。关于如何修改VSS用户密码,详见“3.2.14修改用户密码”。 3.2 VSS浏览器 当你一打开VSS,如果你设定了密码的话,它会提示你输入密码。如果你没有设定密码,你可以直接看到浏览器。在浏览器上,你可以浏览你的数据库、查看项目列表、显示文件统计信息、执行命令对文件和项目进行操作等。浏览器的最上方的标题栏是你当前连接的数据库VSS使用符号来提供有关文件和项目信息。 菜单栏的下面是常用工具栏,这里有许多常用命令的按纽,它可以帮你快速地执行对文件的操作。 在项目栏中,显示有项目列表,包括特殊项目的有关信息。文件栏显示了当前项目的所有文件的列表。结果栏显示当前你所执行的操作的结果。 3.3 VSS基本操作 3.3.1创建新的文件夹 1) 选中要创建新文件夹的项目(上级文件夹); 2) 在file菜单中选中creat project; 3) 写入要添加的文件夹的名称,同时也可以在comment栏中为新建的文件夹添加备注; 4) 点击OK。 3.3.2添加文件夹 1) 选中你要添加文件夹的项目(上级文件夹); 2) 在file菜单中选中add files; 3)在文件夹列表中选中要添加的文件夹; 4)点击add,同时可以在comment栏为你添加的文件夹做一个简单备注; 5)如果你要连同子文件夹一起添加,选择Recursive; 5) 点击OK,成功添加了一个带有备注的文件夹。或者点击close,退出操作,返回add files对话框,点击close。 3.3.3添加文件 3.3.2.1使用add命令添加文件 1)选中你要添加文件的文件夹; 2) 在fil菜单中选中add files; 3) 在文件列表中选中要添加的文件;如果要添加多个文件,可以使用CTRL键或SHIFT键,同时选中多个文件; 4)点击add,同时可以在comment栏为你添加的文件夹做一个简单备注; 5)点击OK。 3.3.2.2用拖动的方法添加文件/文件夹 1)打开VSS浏览器,调整其大小,使得Windows资源管理器能够显示出来; 2)打开Windows资源管理器,调整大小,使得两个浏览器可以同时显示; 3)从Windows资源管理器中选择你要添加的文件或文件夹; 4) 拖动你所选的文件或文件夹,放入VSS浏览器,文件被添加进项目,而添加的文件夹将作为项目的子项目。 3.3.3查看文件 1) 在文件列表中选中要查看的文件; 2) 在EDIT菜单中选中view,打开对话框; 3)选中view SourceSafe’s copy of this file; 4)点击OK。 3.3.4创建工作文件夹 在执行签入(check in)、签出(check out)、撤消签出(undo check out)、取出最新版本(get latest version)和文件合并(merge branches)等命令时都必须使用工作文件夹。工作文件夹可以随时设定或修改,VSS系统中可以通过两种方式设置工作文件夹。 3.3.4.1专门创建工作文件夹 1) 在VSS浏览器的文件或项目列表中选中要设置工作文件夹的文件/文件夹; 2) 在file菜单中选择set working folder,打开对话框; 3) 在资源管理列表中选择或新建文件夹; 4) 点击OK。 3.3.4.2利用check out操作设置工作文件夹 在对文件执行check out操作时,如果该文件还没有设置工作文件夹,系统会提示用户为文件创建或指定工作文件夹,用户可以根据系统的提示对文件进行工作文件夹的设置。 3.3.5修改和编辑文件 1) 在edit菜单中选中edit file,打开对话框; 2) 选择check out this file and edit it in your working folder; 3) 点击OK。 注:如果用户已经为文件设置了工作文件夹,VSS会将该文件的一个COPY放入你的工作文件夹并打开文件,让用户进行修改和编辑;如果用户还没有为文件设置工作文件夹,VSS系统会提醒用户设置工作文件夹,用户可根据系统提示,先设置工作文件夹,才可以对文件进行编辑。 3.3.6移动文件/文件夹 3.3.6.1移动文件 你只有一种方法移动文件:将文件共享(share)到项目中,再将其从原来的项目中delete或是destroy。移动文件后,历史信息仍然有效。但是你不能用move命令来移动单个的文件。 3.3.6.2移动文件夹(project) 注:要使用移动(move)命令,必须先请管理员为你设置对移动目的项目的添加(add)权限和对源项目中文件的破坏(destroy)权限。 使用移动命令你可以重新定位子文件夹,将其从一个文件夹移动到另一个文件夹中。这个命令重新定义了被移动文件夹的路径。 这个命令不可以重命名文件;你只能通过执行重命名命令来实现它。这个移动命令不会改变文件夹的内容或其中子文件夹的历史信息,它只会影响到新的和旧的上级文件夹的历史信息。 警告:当你移动一个文件夹之后,就不能再如实地重建其上级文件夹的早期版本。 移动文件夹的具体操作步骤如下: 1) 选中要移动的文件夹; 2) 在file菜单中选中move,打开对话框; 3) 在列表中选择目标文件夹; 4) 点击OK。 3.3.7共享文件/文件夹(share) 1) 在VSS浏览器中选择你要共享的目标项目。 2) 在SourceSafe菜单中选择share,打开共享对话框。 3) 在file to share列表中选择你要共享的文件,如果文件没有显示,可以旁边的项目列表中查找。 4) 点击share。 5) 点击close。 3.3.8拆分文件(branch) 3.3.8.1拆分被共享的文件 1) 在浏览器中选中你想要拆分的文件; 2) 在SourceSafe菜单中选择branch,打开拆分对话框; 3) 在comment中填写备注; 4) 点击OK。 3.3.8.2用一步操作完成文件的拆分与共享 1) 在VSS浏览器中选择你要branch/share的项目; 2) 在SourceSafe菜单中打开share对话框; 3) 在file to share列表中选择要共享的文件,如果你要的文件没有显示,在项目列表中 3.3.9删除/恢复文件或文件夹 如果想从VSS中移走某个文件,你必须首先确定是仅仅从项目中移走,还是从VSS数据库中移走。你还必须确定是要删除文件,但使其能够恢复,还是永久性地破坏它。 VSS中有以下三种途径可以实现从数据库中移走文件。 3.3.3.9.1删除(delete) 将文件从项目中移走。该文件仍然存在于你的VSS数据库和其它共享该文件的项目中,你可以恢复它。此命令同样适用于项目。 1) 选择文件或项目; 2) 选择file菜单中的delete命令; 3) 点击OK。 3.3.3.9.2破坏(destroy) 删除(delete)对话框中有永久性破坏(the Destroy Permanently)选项,你一旦选中它,文件或项目将从VSS数据库中被移走,你不能再恢复它。此外,当Destroy 和Destroy Permanently命令用于共享文件时,它只作用于当前文件夹,其它共享的文件夹仍然保留该文件,该文件依然保存在VSS数据库中。 1) 选择文件或项目; 2) 选择file菜单中的delete命令; 3) 选中 Destroy Permanently 选项; 4) 点击OK。 3.3.3.9.3清除(Purge) 这个命令将永久性地移走你已经删除的文件或项目,但没有破坏它。你可以使用这一命令清空你的文件或项目中的所有内容,但不能恢复它们。 1) 在VSS浏览器中选中项目; 2) 打开file菜单的properties对话框,按delete按纽; 3) 在列表中选择要清除的文件名; 4) 点击purge; 5) 如果要继续,在VSS给你的提示栏中点击yes。 3.3.10查看文件/文件夹的历史信息或早期版本 在历史信息中保存有每一个文件的详细信息。在history对话框中,你不仅可以浏览到文件的版本信息、备注、以及文件的相关历史记录,也能够获取文件的某个旧版本。 注:只有文件(file)可以从历史信息中check out,文件夹(project)不能从中check out。 你还可以从历史信息对话框中执行get、check out、diff、pin、unpin、roll back和reprot等操作。 要查看历史信息: 1) 在tool菜单选中show history,打开history options对话框; 2) 点击OK。 3.3.11获取文件的最新版本 1) 选择你要操作的文件,也可以是多个文件或某个项目; 2) 在SourceSafe菜单中选择get latest version; 3) 如果你事先没有设定工作文件夹,VSS会提示你是否设定一个工作文件夹,点击OK,设定一个工作文件夹; 4) 如果你已经确定了选项,VSS就会显示get latest version对话框,你就可以从当前的项目中获取文件的最新版本的备份,它放在你的工作文件夹中。 3.3.12获取文件的早期版本 1) 选中你要查看的文件; 2) 在tool菜单中选中show history,打开history option对话框; 3) 点击OK,打开history对话框; 4) 选中你要看的版本; 5) 点击get,打开get对话框; 6) 如果你事先没有设定工作文件夹,VSS会提示你是否设定一个工作文件夹,点击OK,设定一个工作文件夹; 7) 在取出对话框中点击OK,文件版本的备份就会从当前项目调入你的工作文件夹。 3.3.13修改用户密码 使用更改密码命令来设置或更改你的密码。要更改密码,必须首先知道当前的密码,如果你忘记了自己的密码,请与管理员联系。 登录的时候,VSS会提示你输入密码以确认你的身份。如果管理员为你设置的用户名与你的网络名是相同的,VSS将不会再提示你输入密码。 注:你的VSS的密码可以与你使用操作系统的密码相同,也可以不同,它并不会替换你操作系统的密码。 如何更改密码: 1) 从tool菜单打开change password对话框; 2) 在旧密码框里键入你当前的密码; 3) 在新密码框里键入你的新密码; 注:密码可以设1到15个字符,它以*的形式显示; 4) 在确认框里再次键入新密码; 5) 点OK。 3.3.15打开/关闭数据库 如果你使用VSS,你的文件和项目就会被存储在一个数据库中。它安全地保存你的信息并为你提供重要的历史信息和版本跟踪。要创建新的数据库,要与VSS管理员联系。 3.3.15.1打开现有的数据库 要运行你的VSS,你必须与存储你的文件的数据库连接。这一步通常由VSS自动完成,除非你要选择其他的数据库。如果数据库还没有安装,请与管理员联系。 1) 从file菜单,选择open SourceSafe database,打开对话框; 2) 从数据库列表中选择一个数据库; 3) 点击open,打开数据库。 3.3.15.2关闭数据库 你只能在一个数据库中进行工作。因此,如果要关闭一个数据库,只需打开另一个数据库即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值