Visual SourceSafe如何支持并行开发

Visual SourceSafe如何支持并行开发

 

 

前言

一些有用的设置

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

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

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

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

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

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

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

文件共享(share files)的概念

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

如何实现文件共享

  1、 在VSS Explorer中,选择你希望在其中共享文件的项目。

  2、 选择SourceSafe菜单,单击Share,或者单击右键菜单中的Share显示Share对话框。

  3、 通过选择ProjectFile to Share下拉框来选择你准备共享的文件。

  4、 点击Share.

  5、 点击Close.

  如果你选择的是某个项目,系统还会提示你输入新的共享项目名称。操作完成 后,你会发现在当前项目中增加了刚才选择的文件。如附图一所示,我在项目$/projectname/sourcecode/client中共享了项目 bugfix,操作完成后在client下增加了目录bugfix,而且我将$/bugfix项目中的network.txt文件check out出来后,项目$/projectname/sourcecode/client/bugfix中的network.txt文件也自动被check out。(见附图二)

附图一:文件共享


附图二:文件共享后

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

分支操作(branching)

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

如何实现分支操作

  注意,在进行分支操作前,你必须确认已经共享了该文件。当然,你也可以将共享、分支操作放在一起完成。

  1、 在VSS Explorer中选择目标文件。

  2、 选择SourceSafe菜单,单击Branch显示Branch对话框。

  3、 如果需要,你可以在Comment框中加入注释。

  4、 单击OK

附图三:分支操作

  操作完成后,你将会发现项目$/projectname/sourcecode/client/bugfix中的文件network.txtcheck out状态变成了uncheck out状态,而且改变项目$/bugfix中的network.txt文件对它也没有任何影响。

如何在具体的应用中使用这些特性

  那些书上的大侠们学好本领后,都要到江湖上去闯荡一番。那我们了解这些基本的操作后,也一定希望能够在实际的项目中小试牛刀,我们就以早期版本中的bug修改为例。

  我们假定我们项目的2.0版本刚刚完成,项目开发小组继续朝着3.0版本前进,同时试用项目维护人员需要一个临时的2.1版本来修改试用过程中发现的bugs。具体的步骤如下:

  1、 将当前项目$/projectname/sourcecode/client加上标签(Label)–Version 2.0

  2、 继续在该项目上进行修改,形成新的版本。(如附图四)

  3、 这个时候在版本2.0的试用过程中发现错误,你需要一个临时的版本来修改错误同时又不影响版本3.0的开发。

  4、 选择Tools菜单,单击Show History显示Project History Options对话框。

  5、 选中Include Labels复选框。

  6、 单击OK显示History of Project对话框。

  7、 选择加有标签“Version 2.0”的版本。

  8、 单击Share显示Share From对话框。

  9、 选择将要产生的项目的父项目,我们选择$/

  10、单击OK显示Share对话框。

  11、将此项目命名为bugfixAfterV2.0,单击Close退出History of Project对话框。

  12、操作完成后会发现在VSS中增加了一个项目$/bugfixAfterV2.0(注意此时文件2.txt前面的图标形状,如附图五),试着check out文件2.txt,系统会提示你所有的文件已被钉住“(pinned),操作不成功。是的,你还需要下一步操作。

  13、选定那些你确实需要修改的文件,然后进行分支操作。这样你就可以任意修改这些文件,而且你会发现图标也恢复到原来的样子。

附图四:分支操作前的项目历史记录

附图五:分支操作完成后

文件归并(merge files)

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

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

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

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

如何实现归并操作

  1、 在VSS Explorer中选择目标文件或者项目。

  2、 选择SourceSafe菜单,单击Merge Branches显示Merge To对话框。

  3、 在Projects框中选择投送者所在的项目名称,所以说该对话框的名称应该为Merge From,而不是Merge To

  4、 单击Merge显示Comment对话框。

  5、 输入注释,点击OK

  6、 如果两者之间的差异很明显(比如一个文件比另外一个文件多出一行),系统会自动帮你决定目标文件的内容。反之,系统显示Visual Merge对话框,你可以自己决定目标文件的内容。(3

  操作完成后,查看一下目标文件是不是变成了你希望的内容。

  好啦,至此所有的工作已经完成。你可以放松一下来杯浓茶,不敢喝咖啡,怕被 Sun公司控告侵权。但是中国人有个习惯,不管什么东西都喜欢分出个高低,排个名次。我记得小的时候对隋唐演义中的好汉排名津津乐道,什么第一名李元霸, 第二名宇文成都等等。那好,我们也来啰嗦一下,评评VSS的功过是非。(4

评说VSS

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

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

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

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

总结

说明

  2) 这两个概念是从Rational ClearCase借用过来的。

  3) 关于Visual Merge对话框的详细信息,可以参考VSS的帮助文档。

  王 和全,毕业于南昌大学。现主要在J2EE平台上从事广电行业运营系统的开发工作,擅长组件技术,多层架构下的编程。喜欢钻研新的技术,最近又迷上了 Linux。除了写程序,平生最大的爱好就是旅游,梦想有一天能开着自己的宝马去郊游。您可以通过wanghequan@shdv.com与我联系,我期 待着朋友们的来信。

 

 

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成31913 人正在系统学习中 相关资源:vissim电子仿真软件-嵌入式文档类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2009年3月20日
下一篇 2009年3月20日

相关推荐