软件配置管理是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。
2、为什么需要配置管理
如果没有软件配置管理,最大的麻烦是工作成果无法回溯。随着工作的进展新的程序覆盖了老的程序,当突然发现新程序有问题而老程序正确时怎么办?那只能重写老的程序来覆盖新的程序。过一段时间又发现原来的老程序有问题,而解决方法在原来的新程序中……您是不是快要发疯了。
为了避免成果被覆盖,包括我自己在内的很多人早期采用手工管理版本的方式,例如当一个新版本产生时用当时的日期来命名文件夹,然后再复制一下以后的修改在复制的文件夹内进行,这样上一个版本就被保存下来了,周而复始不同的版本不会被覆盖。虽然这种方式可以从某种程度上解决版本的回溯问题,但他存在的缺点是显而易见的:第一点如果保留结果过于频繁,将会导致产生大量的有着重复内容的文件夹,庞大的物理空间,管理起来很麻烦;如果保留旧版本的时间间隔太长,可能产生某些有用的老程序无法回溯。拿我最近开发的一个程序来说程序只有几十兆,经过一年的开发各版本累计到1G。第二容易产生版本的混乱,如果是团队开发软件,这种简单的方法更难解决问题的本质了。
3、人的问题
配置管理的方法是成熟的,而且相应的软件工具也是成熟的,基本上不存在看不懂、不会用的问题。配置管理的执行效果如何,完全是事在人为。妨碍配置管理的主要问题是人们嫌麻烦和侥幸心理作怪。
在没出乱子的情况下,执行版本控制看起来有些麻烦。每次修改工作的时候总是要Get Latest Version,接着Check Out,修改完后又要Check In,多做了三步。其实这三步加起来也就十几秒钟,而且不费脑子,根本没有添加多少麻烦,仅仅是个人感觉不爽而以。然而不执行版本控制的话,万一发生工作成果被覆盖或丢失等问题,麻烦就大了。
4、软件配置管理规范
软件研发和管理过程中会产生许许多多的工作成果,例如文档、程序和数据等,他们都应当妥善地保管起来,以便查阅和修改。如果把所有文件一股脑的塞进计算机里,那么使用起来很麻烦。
凡是纳入配置管理范畴的工作成果统称为配置项配置项主要有两大类:一类是属于产品的组成部分,例如需求文档、设计文档、源代码、测试用例等等;另一类是在管理过程中产生的文档,例如各种计划、报告等。
每个配置项的主要属性有名称、标识符、文件状态、版本、作者、日期等。配置项及历史纪录反映了软件的演化过程。
基线由一组配置项组成,这些配置项构成了一个相对稳定的逻辑实体。基线中的配置项被冻结后,不能在被任何人随意更改。基线通常对应于开发过程中的里程碑。通常将交付该客户的基线称为一个Release,为内部开发用的基线称为一个Build。
版本控制的目的是按照一定的规则保存配置项的所有版本,避免发生版本丢失或混乱等现象。配置项的状态有三种:“草稿”、“正式发布”和“正在修改”
配置项的版本号与配置项的状态紧密相关:
(1) 处于“草稿”状态的配置项的版本号格式为: 0.YZ
(2) 处于“正式发布”状态的配置项的版本号格式为: X.Y。
一般只是Y值递增,当Y值到达一定的范围时X值才发生变化。
(3) 处于“正在修改”状态的配置项的版本号格式为: X.YZ。
一般只增大 Z值,当配置项修改完毕,状态重新变成“正式发布”时,将Z值变为0,增加X.Y值。
5、常用的配置管理软件
A)、自从20世纪80年代后期研制并完善了“增量存储算法”后配置管理工具的春天便开始了,目前国内常用的配置管理工具大概有SourceSafe、CVS和ClearCase。
SourceSafe是Micrsoft公司推出的一款支持团队协同开发的配置管理工具,是Visual Studio的套件之一。因为其短小精悍,又继承了微软集成销售的一贯作风用户可以相对于免费的价格得到,用户量绝对是第一位。
SourceSafe简单易用人们在使用配置管理工具时候,80%的时间只是用Add,Check in,Check out等区区几个功能。
SourceSafe 的主要局限性:只支持WINDOWS不支持异构环境下的配置管理;对INTERNET支持不够完善。
B)、在详细介绍SourceSafe首先简单概述一下它的基本机制。SourceSafe是使用服务器、本地机的概念来进行操作的,它认为所有需要操作的文件都存在服务器版本文件和本地机版本文件,无论您的SourceSafe的架构是服务器客户机形式还是个人单机版形式,它的机制都是这样。用户所用的修改都是在本地机上完成的,修改完成后再上传服务器。单机版也是这样操作。我们一定要明确两个版本后再来分析。
服务器版本文件是一个绝对受配置管理软件限制的文件,用户只能通过 SourceSafe的规定的权限和操作方法修改它,因为它并不是您一个人的,它是大家的。本地文件是一个基本不受限制的文件,您可以象操作本地文件一样操作它。
SourceSafe由Visual SourceSafe 6.0 Admin、Microsoft Visual SourceSafe 6.0、Analyze VSS DB、Analyze & Fix VSS DB四部分组成。
C)、Analyze VSS DB、Analyze & Fix VSS DB两个工具不是很常用,前者用于检查SourceSafe数据库文件的完整性,后者主要是修正SourceSafe数据库文件存在的错误。
D)、Visual SourceSafe 6.0 Admin的功能类似于win2k的用户管理器,软件配置管理人员用它来分配用户和设定相应的权限。
管理员的管理操作一般都集中在 Visual SourceSafe 6.0 Admin中,系统中只有一个系统管理员Admin可以登陆到此程序中进行管理工作,一般刚刚安装的系统中此用户的密码缺省为空。而且系统为Admin这个用户保留的一切权力,不可更改。
数据库的创建这个操作必须在服务器上执行,因为通过客户端创建数据库的操作,只是在客户端的机器上创建的数据库,这个数据库往往只能单机使用。同时要必须注意,由于 VSS是通过WINDOWS的网络共享来完成服务器端受控版本文件的共享,因此VSS服务端的数据库必须建立在服务器的一个完全共享的目录之中。否则,客户端将无法获得数据库中的文件。
数据库的备份与恢复,备份数据库或者其中的一个项目,点击 tools-archive projects…菜单弹出对话框,根据提示一步步进行备份,最后会形成一个扩展名为*.ssa的备份档案文件。
如果要从档案文件中恢复 VSS数据库中的文件数据,点击tools-restore projects菜单根据提示一步步完成数据恢复工作。其中,在恢复过程中,可以选择恢复为原有工程,也可改变恢复成其他工程目录。
E)、Microsoft Visual SourceSafe 6.0是SourceSafe的主要使用平台,样子象Windows的文件管理器,它所显示的路经是以‘$'符号为根节点的相对路径,在这里介绍一下此平台的主要使用方法。
( 1)添加项目
您可以在根节点下添加项目,方法是: File—Add File出现Add File对话框后选中相关文件,按Add即可。
你可以继续通过 File-Create Project在根目录下创建一个项目后在此项目节点下添加文件。
添加完文件后,您所添加源文件的属性自动变为只读,并在所添加文件的文件夹下生成一个 vssver文件 ,以后对文件的操作基本与原文件没有关系了。
( 2)浏览Source Safe Server中的文件
在 Visual SourceSafe Explore中双击要打开的文件,会弹出一个对话框,您直接点击OK即可。这时SourceSafe Explore会将文件拷贝一份到本地机的临时文件夹中(临时文件夹路径在tools-options-general下设置),因原文件前面提到已经变了只读,所以临时文件也是只读属性,而且文件名会通过系统自动更改。
( 3)设置工作文件夹
SourceSafe 的文件夹需要在本地计算机上指定一个“working folder”。当“check out”时,相应文件会下载到这个本地工作文件夹中。我们在本地的文件中修改文件,然后把修改后的文件“check in”回服务器的source safe中。
我们可以利用“ set working folder”这条命令来建立source safe的文件夹和本地“working folder”的对应关系。方法在source safe的文件目录树中选中要建立对应关系的文件夹-右单击-选择“set working folder”即可。
( 4)、下载最新版本文件到本地机
“ get latest version”命令可以将一个文件、一组文件或整个文件夹的最新版本从source safe中拷贝到本地的计算机中,并用只读的形式保存起来。方法如下:
在左侧的文件树中选择相应的文件夹右单击后,选择“ get latest version”
这时会弹出一个对话框,它包括三个复选框:三个复选框全空时,只将 source safe文件夹根目录下的文件拷贝到本地计算机,如同DOS中的COPY命令;recursive选项选中时,会将source safe文件夹下的所有文件夹及文件都拷贝到本地计算机,如同DOS中的DISKCOPY,make writable选中,拷贝到本地的文件是可写的。
如果我们单击“advance”按钮,就会出现更多的选择项。在“set file”中的四个选项第一如下:current为拷贝操作发生时的当前时间;Modification为文件最近一次修改的时间;check in为文件最后一次check in是的时间;default同current.
在replace writable中的四个选项作用是,当本地机有一个和要下载的文件同名时,且本地机的文件是可写的同名文件时,设置系统如何执行拷贝:ask系统提示是否覆盖本地的同名文件;replace自动覆盖本地的同名文件;skip不覆盖本地的同名文件;merge将两个文件合并。
一定要养成先Get Latest Version的习惯,否则如果别人更新了代码,VC会提示你存在版本差异并问您是否覆盖、整合、保留等,如果选错了就会把别人的代码Cancel掉,所以一定小心。
(5)下载文件到本地操作
当我们要修改一个文件时,首先要把文件从source safe中复制到“working folder”中,并且以可写的形式保存,这一系列动作的命令就是check out。具体使用方法如下:选择要下载到本地机的文件,右单击后选择check out,这时会弹出一个对话框。缺省的状态下“don't get local copy”这个选项是不选的,他的意义是这样的:如果不选保持缺省状态,当本地的同名文件是只读时,则系统首先用source safe的文件更新本地的文件,本地的文件变为可写。当本地的文件是可写时,则会出现另一提示框其中的选项leave this file:本地文件保留当前状态,source safe中的文件也保留当前状态,这样有可能两个文件不一致。选项Replace your local file with this version from source safe:用source safe中的文件更新本地的文件。如果您选择don't get local copy选项:则不把source safe的文件拷贝到本地。
文件check成功后,您可以看到文件上有红色标记,这时您的本地文件是可写的,您就可以修改文件了。上面的选项也许让您心乱,为了操作更简便,我们推荐一种check out 方法:
当本地的文件比source safe中的文件内容新时,选择don't get local copy选项。然后check in使本地机与服务器内容同步;
当source safe中的文件比本地机的文件内容新时,则在source safe中选择此文件,然后get latest version命令,然后按照默认选项进行check out;
当两者内容相同时,按照默认选项操作。
注意:source safe中使用了文件锁的概念当一个文件被别人check out时,其他人不能check out 此文件;如果文件锁是无效的,您可以查看Visual SourceSafe 6.0 Admin-tools-general-allow multiple chechouts选项是否被选中。只有当check out 修改文件完毕后,一定要check in,来保证source safe中的文件最新。
谨记check out时将是使得代码对自己可写,对别人只读,请仅仅Check Out自己需要修改的部分,不然你工作的时候同组成员只能休息了。
(6)上传文件到服务器操作
我们必须利用 check in命令保证source safe本地的文件同步,check in与check out 成对出现,它的作用是用本地的文件更新source safe中被check out 的文件。
具体操作在 source safe选中处于check out状态的文件,右单击选择check in即会出现一个对话框:默认状态下它的两个复选框处于非选状态,Keep checked out选项,可以在check in 后自动的再次check out,等于是省略了下一步check out操作;remove local copy选项,可以在check in的同时,删除本地机上working folder中的同名文件。
一般按照缺省选项就可以了。 Check in成功后,source safe和本地的文件是完全相同的,本地的文件变成了只读文件。要再次修改文件时,再执行check out操作,此时本地机的文件属性自动变为可写状态。一定记住check out 后要check in,不然导致的后果就如同写完了文件不保存差不多。
一定要保证你的文档正确、可编译后再 Check In不然会使得其他人也无法通过编译,整个工程没法调试了。
( 7)undo check out 操作
当一个文件被 check out 后,您如果想要撤销这项操作,可以使用undo check out命令,操作步骤:选中处于check out 状态的文件,右单击后选择undo check out.
当source safe中的文件和本地的文件完全相同时,则不出现提示信息,文件恢复为普通状态。
当source safe中的文件和本地的这个文件不完全相同时,则出现提示窗口,对话框local copy中包括三个选项:
replace选项选中后会出现,系统询问是否覆盖的信息,如果单击yes则是用source safe上的文件最后一个版本覆盖本地机上的文件,如果选择no保留本地计算机上文件的内容,source safe上的文件是上次check in后的内容。此时,两个文件可能出现不同;
leave选项保留当前计算机上的内容,source safe上的文件是上次check in后的内容,两个文件可能出现不同;
delete 选项删除本地计算机上的这个文件。
选择一个选项后,单击 OK后,文件回到普通状态。
( 8)edit操作
edit命令是一个组合命令,是先check out再修改的命令的组合。应当注意的是,执行edit命令后,我们修改了文件,但是source safe中的文件并没有同步的修改,我们还是要check in完成本地文件与source safe上文件的同步。
( 9)查看文件的历史内容
方法选中此文件,右单击选择 show history,出现一对话框后,经选择OK后弹出一窗体,我们可以看到这个文件的所有版本,要查看某个版本可以选中VIEW按钮。如果想下载某个先前的版本可以点击get按钮。
( 10)关于source safe的权限
缺省状况下,项目安全管理是以简单模式来运行,即用户对工程的操作的权限只有两种,一种只读权限,一种读写权限。要启用高级模式,可以在 Visual SourceSafe 6.0 Admin-tools-project security-enable project security将此选项选选中。
source safe的权限分为5级:
无权限级:看不到文件
read级:自能浏览文件,可以使用get latest version命令
check in/check out级:可以更新文件,但不能对文件进行删除
delete级:可以删除文件,但通过某些命令这些文件还能恢复。
Destroy级:可以彻底的删除文件,删除之后无法恢复。
为用户设定权限的工作一般由软件配置管理员在 Visual SourceSafe 6.0 Admin中完成。
权限管理就是管理用户和工程目录之间的操作权限的关系。因此,有两种管理方式。一种就是以工程目录为主线来管理权限,一种是以用户为主线来管理权限。
以目录为主线管理用户权限则点击 tools-right by project…菜单,弹出对话框来管理项目的用户访问权限。
如果以用户为主线来用户权限,则应先在主界面的下方的用户列表中选中一个用户,再点击 rights assignments for user…菜单,弹出对话框,对话框下方列出了该用户对数据库各项目目录的访问权限,如果访问某个项目在列表上没有列出,则说明该项目的权限是继承上级目录的访问权限。只要您点选一个目录,就可以编辑该用户对该项目目录的访问权限。
权限复制就是将一个用户的权限直接复制给另外一个用户,管理员可以通过 copy user right…菜单来实现。
( 11)关于password的更改
password一般是由软件配置管理员分配的,如果我们需要修改密码,可以在tools-change password 下修改。 需要说明的一点是当你的 source safe密码和windows密码相同时,启动source safe,不会出现提示您输入密码的对话框。这是微软的的一贯作风,在SQL server数据库管理系统下也能找到这个影子,因为微软认为windows的密码应该比其他软件的密码级别要高,既然您能用相同的用户名和密码进入windows那么您也有权使用相同的用户名进入其他的软件。