2008年(12)
分类: 项目管理
2008-12-17 19:08:37
VSS使用版本号为跟踪文件和工程的每一次变动。用户可以使用版本号来获取文件或工程的任何一个版本。
事实上,在VSS中可以采用三种方式跟踪版本变化——版本号,修改时间,标签
版本号是VSS自动维护的,用户没有办法控制。VSS中版本号是一个整数。当用户将一个文件加入到VSS中时,VSS会为其分配版本号1,以后用户对该文件每做一次修改,其版本号就会增1。VSS帮助文档中没有说明如何维护工程的版本号,但是提到工程的版本号也是一个整数。因此据我推测VSS对工程版本号的维护应该类似于下面这个过程:
当用户增加一个工程时,用户为该工程分配版本号1。如果工程中发生任何改变(增删改任何一个文件)时,其版本号就会自动加1。但是现在的问题是,工程的版本号和工程中文件的版本号不是同步变化的。如工程P有3个文件f1、f2和f3,三个文件的最新版本号分别为8,5和20,工程P本身的最新版本号为20,那么工程P的版本12对应着f1,f2和f3的哪个版本呢?因此VSS肯定会为每个工程的每个版本维护一张表,该表只需要2列——文件名,版本号。当然工程是可以嵌套的,如果一个工程下还有子工程,可以将该子工程当作一个文件看待即可。
文件的历史会显示其版本号,但是工程却不会。而且工程的历史对于用户来说显得很混乱,因为它其实就是将工程下所有的文件和子工程的历史罗列出来而已。为此VSS的建议是:用版本号来跟踪文件的版本,而工程的版本则使用VSS提供的另一种方法——标签来跟踪。
虽然使用版本号来跟踪单个文件的版本非常直观而且方便(VSS自动维护),但是这种方式却不适用于工程。为此VSS提供了另一种跟踪版本变化的方式——标签。VSS允许用户为工程或文件的任何版本指定一个标签。虽然标签可以应用于文件,但是这种做法可能并没有多大意义,除非用户认为该文件的某次修改的确非常的重要所以用标签给标示出来。然而实际情况是,在配置管理的过程中我们更喜欢从工程的层次去跟踪版本变化。为什么说标签适用于工程呢?因为如果用户为工程的某个版本指定一个标签,那么该工程下所有文件的对应版本都会被自动打上相同的标签。按照VSS标准的说法就是,当你为一个工程指定一个标签时,该工程下的所有文件和子工程就自动继承了这个标签。这样就可以轻松的查看某个文件的某个版本对应于整个工程的哪个版本,或者说工程的某个版本下对应着哪些文件的哪个版本。另外由于用户没有办法查看工程的版本号(至少我现在还没有发现),因此当一个工程经过反复多次修改之后,用户就很难直观的查看该工程到底由哪些版本,每个版本都做了什么样的变化。可是如果用户在每个工程发生一次变化(或者一次重要变化)时就为这个工程指定一个标签并注释这个标签的话,那么通过标签就可以清晰地看出该工程有哪些版本,每个版本都做了什么变更。
(一)为工程或文件的当前版本指定标签:
1. 选定需要指定标签的工程或文件
2. 在“文件” 菜单,选择“标签”,弹出“标签”对话框
3. 在“标签”对话框中指定标签的描述和评论
4. 点击“确定”
(二)为工程或文件的历史版本指定标签
1. 选定需要指定标签的工程或文件
2. 在“工具”菜单,选择“显示历史”,弹出“历史”对话框
3. 选择“详细信息”,弹出“历史详细信息”对话框
4. 指定标签的描述和评论
5. 关闭“历史详细信息”对话框
6. 关闭“历史”对话框
需要说明的是,方法二的第2步会弹出如下对话框。如果想为工程指定标签的话,则只选中“Include Lables”,如果想为文件指定标签的话,则请选中“Include file histories”。否则的话你可能会发现自己指定了一个标签,但是这个标签却只对某个文件有效,而不是对整个工程都有效。
前面提到,VSS还可以使用文件的修改时间来跟踪文件的变化。事情是这样的,当一个文件被Check Out之后再Check in时,VSS会检查这个文件是否发生了变化。如果发生了变化,VSS会自动将其版本号加1,同时会记录该文件的修改时间(注意是修改时间而不是Check in时间)。因此每个文件的每个版本都对应着一个修改时间,以方便用户查询某个版本是什么时间修改的。