Visual SourceSafe功能细挖掘

一、VSS概述

 

版本控制是工作组软件开发中的重要方面,它能防止意外的文件丢失、允许反追踪到早期版本、并能对版本进行分支、合并和管理。在软件开发和您需要比较两种版本的文件或找回早期版本的文件时,源代码的控制是非常有用的。

Visual SourceSafe 是一种源代码控制系统,它提供了完善的版本和配置管理功能,以及安全保护和跟踪检查功能。VSS通过将有关项目文档(包括文本文件、图象文件、二进制文件、声音文件、视屏文件)存入数据库进行项目研发管理工作。

 

1.1 VSS中的项目

 

项目(project)是指用户存储在VSS数据库中的所有文件(file)的集合。用户可以在项目之间或项目内部实现文件的添加(add)、删除(delete)、编辑(edit)、共享(share)。一个“项目(project)”在很大程度上类似于一个普通系统的的文件夹,不同的是它能更好地支持文件合并(merge)、跟踪(archive)和版本控制(version control)功能。

文件保存在VSS数据库中的项目(project)里。你无须管理存储在VSS 中的文件正本,除非你要检查或与其它拷贝进行比较。

VSS为每一位用户提供了一份备份文件放入工作文件夹(working folder),供用户对文件进行查看与编辑。尽管没有工作文件夹也可以查看文件,但要想真正实现对文档的处理,必须建立工作文件夹。

 

1.2 VSS的版本控制功能

VSS能够保存文件的多个版本,包括文件版本之间每一处微小的变动。版本控制有以下几方面的内容:

è      组内合作——在缺省的情况下,一般一个文件在某一时间只允许一个用户对其进行修改,这样可以防止文件意外地被其他用户改动或者覆盖。但管理员可以改动这种缺省的设置,允许文件多层签出。这种设置也能防止过多的、不必要的改动。

è      版本追踪——VSS能够对源代码和其他文件进行存储和早期版本的追踪,从而实现重建文件早期版本等有关功能。

è      跨平台开发——在多平台开发的情况下,版本追踪用于维护核心代码。

è      代码的再使用—— 追踪程序基准使得代码可重用。

 

二、如何支持并行开发

 

  我们知道随着软件规模的日益增大,软件开发周期会变得越来越长,投入的人力也会越来越多。在整个过程中,将不可避免地会产生并行开发的情况,那么在VSS中是如何支持并行开发的呢?在并行开发的过程中要注意些什么呢?  本文要求读者对VSS有一定的熟练程度。

 

2.1 一些有用的设置

  

让我们先来看看VSS中一些非常有用的系统设置,他们可以用来加强管理或者简化你的工作。首先是一些与你的项目安全管理策略有关的设置,比如"是否允许multiple checkouts""是否激活项目安全机制(project security)"等。还有一些是方便工作的,比"设置影子目录(shadow folders)""重用上次注释""双击直接编辑文件""是否采用图形化归并"等。这些你都可以在"Tools"-"Options"里进行设置。

 

2.2 什么情况下会出现并行开发

  

不知道有没有喜欢听评书的朋友?大家最讨厌听到:欲知详情如何,且听下回分解。不过我们今天要讲的是另外一句话:花开两朵,各表一枝。我记得当时虽然这边打得热火朝天,大呼过瘾,但是心里总是惦记着那边怎么样啦!真恨不得有两个电台,一边是鲁智深大闹野猪林,一边是林教头风雪山神庙。那么在实际的项目开发过程中,什么时候会出现花开两朵的情况呢?

 

  1、 你想修改项目早期版本中的某个bug

  2、 其它的小组成员占有了你希望处理的文件。你可以等他将该文件check in,或者你可以采取multiple checkouts,你还可以选择在一个分支上工作。

  3、 你所做的工作涉及到许多文件,你选择一个分支流就可以避免经常打乱别人的工作。同时你可以将所有的工作测试完后再将它们集成到你的项目中。

  4、 项目规定你不能够在主线上工作。相反地,项目被分成许多小的部件,每个部件是一个分支,只有该部件完成后,才会将它合并到主线中。

  那我们是不是需要两个电台呢(建立两个项目)?可喜的是,VSS中提供了共享、分支等操作来解决并行开发的问题。

 

2.3 文件共享(share files)的概念

  

VSS中你可以在不同的项目之间共享文件。我们知道,在VSS的数据库中有且仅有文件的唯一拷贝--主控拷贝(master copy),因此共享文件也就是在不同的项目里建立了指向该主控拷贝的链接。如果你在其中一个项目中改变此文件,那么其他项目中所有的共享也随之改变。此外,如果选择共享某个项目中的所有文件,我们也可以称之为共享该项目。

  文件共享机制确实为我们带来了不少便利之处,它可以减少数据库中文件的数量,能够实现文件的重用。但是,文件共享机制的"非各自独立性"也限制了它扮演更重要的角色,真所谓"成也萧何,败也萧何"

 

2.4 分支操作(branching)

  

要真正地支持并行开发,就不得不用到分支操作。与共享操作不同的是,分支操作实际上是将文件放在不同的项目中来实现完全的独立性,此时在一个项目中的文件修改不会影响到其他的项目中的文件。此外,共享操作后形成的位于不同项目里的两个文件拥有一个共同的祖先,也就是他们的历史(history)记录是从同一点分离出来的。拆分文件就断开了共享连接,使得本项目中的文件与其他原来共享的项目无关。对此文件的修改将不会再反映到其他项目上。

拆分(branch)是将文件从原来共享的项目中分离出来的过程。它使得VSS可以实现从不同的路径追踪文件。

注:在其他版本控制系统中,分支是通过跟踪版本号来实现的。例如:版本“ 2.3.9 .2”是版本2.3的第二个修订版本的第九个分支。而VSS通过明显不同的项目名称实现对文件分支的跟踪。

 

2.5 文件归并(merge files)

  

正所谓,分久必合,合久必分。分支操作以后,你肯定需要重新将这些文件合并到一起,比如上面那个例子,你肯定希望在版本2.0中被修改了的错误不要在版本3.0中再出现,这个时候你就需要用到归并操作。

  所谓文件归并就是将由一个文件产生的多个不同拷贝重新形成一个唯一的新的文件版本,一般都是将分支上的改变反映到主线上,所以称之为归并操作(当然还存在其他两种情况,使用multiple checkouts,某些情况下get一个文件的时候)。在文件归并过程中VSS并不能去决定文件差异的取舍,它只是将这些文件间的异同提交给你,由你自己来确定最后的文件内容。当然比较的基准就是我们前面提到的它们共同的祖先。

  有两种方法可以进行归并操作,一种是默认的visual merge,另一种是manual merge。一般推荐使用前一种方法。

  文件归并过程中涉及到两个概念,一个是投送者(contributor),另一个是目标(object)投送者就是你在分支上的那些文件,目标就是你在主线上的那些文件,归并操作完成后,只有目标的内容改变,而投送者的内容保持不变。

 

三、VSS支持并发缺点

  

在支持并行开发方面,VSS提供了大量优秀简洁的特性,但是在以下几个方面稍显不足:

  1、 在进行分支操作的时候,灵活性不是很大,只能是单一地选择某个项目中的所有文件,不能进行一些自定义的设定,比如我只希望选取所有的文本文件。

  2、 由于VSS中主线和分支是采用不同的项目来区分,所以很容易被混淆而且增加项目的数量,不如采取版本号来区分直观。

  3、 在进行归并操作时,投送者与目标的概念很模糊,而且没有显示地提出这两个概念。

  4、 由于VSS中没有版本树的概念,所以分支操作后没有一个直观形象的版本演化的感官认识,就像Rational ClearCase中那样,这样使得不能把分支和主线很好地联系在一起。

总结

  VSS中的这些高级特性,使得你能够用来应付一些比较复杂的情况。但是,VSS毕竟只是一种工具,项目配置管理的成败主要取决于项目的配置管理策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值