Visual SourceSafe 教程[四]

来源:互联网 发布:网络教育毕业考试难吗 编辑:程序博客网 时间:2024/05/16 17:21

4 普通用户部分

4.1 对工程、文件的一般性使用(Normal Use about Projects and Files)4.1.1 打开/关闭数据库(Open/Close a Database)4.1.2 创建新工程(Create New Projects)4.1.3 添加文件、目录、工程(Add Files,Folders,and Projects)4.1.4 删除和恢复文件、工程(Delete and Recover Files and Projects)对文件和工程的Branch/Share操作)。

 

  此处略,详细内容请查阅联机帮助。

 

  此处略,详细内容请查阅联机帮助。

 

  此处略,详细内容请查阅联机帮助。

 

  VSS提供了3种删除文件的方法:

  • Delete:VSS只把指定文件从当前工程中删除,而在VSS数据库中仍留有该文件的记录。此外,其他共享了该文件的工程仍保留此文件(参见
  • Destroy:VSS将把指定文件从VSS数据库中彻底删除,其后将无法恢复。
  • Purge:永久性删除已被Delete掉的文件,其后将无法恢复。

 

  对于共享文件,Delete和Destroy仅将文件从当前所选工程中删除掉,其他共享了该文件的工程,以及VSS数据库中,仍留有此文件。

4.1.5 移动文件和工程(Move Files and Projects)对文件和工程的Branch/Share操作),然后将原有工程(original project)下的该文件Delete或者Destroy(参见删除和恢复文件、工程)。移动后,文件的历史记录将被保留。

  移动一个文件的唯一方法是,在文件新所在位置的上一级工程(parent project)处使该文件共享(参见

  通过使用Move命令,你可以将一个子工程(subproject)从某个上级工程重置到另一个工程下。该操作不会改变子工程的内容和历史记录,但它会影响上级工程的历史记录(包括子工程所在的原有上级工程和新的上级工程)。当移动一个工程后,你将无法重建原有上级工程的某个旧版本。

4.1.6 重命名文件、工程(Rename Files or Projects)对文件和工程的Branch/Share操作)。

  若某个文件被多个工程所共享,对该文件的重命名将影响所有工程,而在Branch状态下,则不影响(参见

4.1.7 设置工作目录(Set Working Folders)4.2 签入、签出、获取、查看及相关操作(Check In/Out、Get、View and Other Related Use)4.2.1 签入签出操作(Check In and Check Out Files)4.2.2 撤销签出(Undo Check Out)4.2.3 获取最近版本(Get Latest Version)4.2.4 获取早期版本(Get Earlier Version)4.2.5 获取和查看文件、工程(Get and View Files and Projects)4.2.6 回滚到以前版本(Rollback to Previous Versions)对文件和工程的Branch/Share操作)。建议你使用虚拟回滚(Virtual Rollback),它将不会使随后的改动永久丢失。具体操作如下:

  此处略,详细内容请查阅联机帮助。

 

 

  此处略,详细内容请查阅联机帮助。

 

  执行该操作时,若用户选择了替换本地文件,则用户将丢失最近一次签出后对该文件在本地的更改。

 

  此处略,详细内容请查阅联机帮助。

 

  此处略,详细内容请查阅联机帮助。

 

  Get操作将文件或工程拷贝至本地的工作目录,并设置为read-only属性。可以用View操作查看文件内容,此时用户无需设置工作目录。

  尽量不要删除vssver.scc文件。本地工作目录及每个子目录下都包含一个这样的文件,VSS利用其中记录的信息确定本地目录中哪个文件已经更改了。删除后,将使新一次的Get操作速度减慢。

 

  该操作将使文件的内容恢复到先前某个版本时的状态,它将使所有在该版本后所做的改动丢失。如果你所回滚的文件被多个工程共享,则操作只影响你所指定的那个工程,并且它会自动实行Branch操作(参见

  • 选择你要回滚的文件并签出
  • 使用Get命令获取某个原有版本到本地
  • 签入该文件

 

4.2.7 多人同时签出一个文件(Check Out Multiple Files)*合并

  缺省状态下,一个文件只允许一个人签出,管理员可以通过修改配置,允许多人同时签出。此时,VSS将跟踪所有签出该文件的用户。每当用户签入时,VSS都将和当前存于数据库内的最新版本进行比较,若用户修改的是同一文件的不同处,VSS将进行简单的合并(Merge),否则提示用户,并且不允许签入。用户可以通过VSS提供的Visual Merge工具,比较存放于VSS数据库中的文件和本地文件的异同,手工修改本地文件,直到认为已经可以签入时,方才执行最终签入操作。(参见

4.2.8 合并(Merge)*多人同时签出一个文件)。

  在VSS中,合并可能发生在3种场合下:使用Multiple Checkout的工作方式;合并原先已经Branch了的文件;获取(Get)文件。

  • Multiple Checkout:若多个用户同时签出一个文件,第一个用户只要简单的签入就可以了。后续用户也可以签入,但他们的更改将需要和其他所有用户的更改合并,VSS将得到完整的更改内容(参见
  • Branch:当被Branch的文件合并到其中一个分支时,VSS将会把在另一个分支上所做的改动合并到该分支上(参见对文件和工程的Branch/Share操作)。
  • Merge on Get:在Multiple Checkout工作方式下,当使用Get Latest Version操作时可能引发合并操作,此时保存在VSS数据库中的内容将合并到本地文件。但如果某个文件是排他性签出的,则不会引发合并操作(参见排他性签出)。

 

  在完成一个合并之后,VSS遵循如下规则:

  • 如果仍有冲突,VSS维持文件的签出状态,为了使文件能顺利签入,你必须排除这些冲突。
  • 如果你使用Merge Branches命令,将一个文件合并到一个工程中,而该工程中的对应文件已被签出,该文件将继续保持签出状态(参见对文件和工程的Branch/Share操作)。
  • 在任何其他时候,VSS将会提示你,或者在合并后自动签入,或者保持文件的签出状态以使你在更新VSS数据库中内容之前再核查一边。

 

  缺省情况下,当发生冲突时,VSS将启用其Visual Merge工具。

4.2.9 排他性签出(Exclusive Check Out)*4.2.10 对工程的Cloak操作(Cloak Projects)*4.3 Branch、Share、Label和Pin操作(Branch、Share、Label and Pin)4.3.1 对文件和工程的Branch/Share操作(Branch and Share Files and Projects)*给文件、工程指定标签),利用Share功能创建过渡版本(工程路径为$/Application2.1),此时两个工程中的文件是共享的,且$/Application2.1中的所有文件都处于Pin状态(参见 Pin操作),即:在向3.0升级的过程中,对$/Application中相关文件的更改,将不影响$/Application2.1下的内容,但此时文件仍是共享的。仅对需要修改bug的文件采取Branch操作。这样做的好处是,中间版本的bug修改工作和3.0的升级工作可以同时进行,并且最大限度的降低了所需的存储空间。

  允许多人同时签出一个文件是针对整个VSS数据库而言的,但用户仍可以根据实际情况,针对某些文件修改该规则。对某个文件实施排他性签出,则其他用户将无法签出该文件,直至该用户使用了签入操作。

 

  若对某工程实行了Cloak操作,则当对该工程的上一级工程进行Get/Check In/Check Out/Undo Check Out/Project Difference操作时,将不会影响该工程及其子工程。而在该工程上进行类似操作时,则和平常得到的结果一样。这一属性将传递给其下的子工程。

  例如:某个工程其路径为$/Application,下面有三个子工程:$/Application/Code,$/Application/Test,$/Application/Docs,而Docs工程下的内容可能对你没有任何用处。当你每次从$/Application处进行Get操作后,都需要从本地删除多余的Docs目录。此时可以对Docs进行Cloak操作。这样,每次的Get操作将只把Code和Test下的内容放到本地。如果你需要获取Docs工程下的内容,则可以单独从Docs处进行Get操作。

 

 

  在VSS中,通过Share操作,一个文件可以被多个工程共享,在任何一个工程中对该文件的更改,都将反映到其他相关工程里。

  Branch操作则消除这种共享,每次将一个被共享的文件拆成两个分支,在不同工程中分别跟踪该文件。通过查看文件属性的Links属性页可以了解该文件被哪些工程共享,通过查看Paths属性页可以了解文件的分支状况。

  例如:产品目前的正式版本为2.0(工程路径为$/Application),在加入新功能后将升级为3.0。但在开始升级的过程中,其间的一个过渡版本2.1存在bug,需要修改。此时可以进行如下操作:选择被Label标识为2.0的那个版本(参见

4.3.2 给文件、工程指定标签(Label Files and Projects)*同时维护一个工程的多个版本

  VSS使用3种方式跟踪文件的历史记录:内部版本号,日期,用户自定义标签。

  标签可以是一个不超过31个字符长度的串,例如:"1.0"、"2.01b"、"Final Beta"、"Approved for QA"。应用Label功能,用户就可以获取某个特定时期的软件内容了。所有当前工程下的文件和子工程都将继承该标签。

  注意下面几点:

  • 当使用Label功能时,表明你在所选工程的历史记录里创建了一个新的版本,但文件和工程本身的内容并未发生变化。
  • 对某个工程的某个标签再次使用Label操作将覆盖原来的标签内容。

 

  请参见附录A1:

4.3.3 Pin操作(Pin)*对文件和工程的Branch/Share操作)。

  该功能对共享文件很有用,尽管它的使用不仅限于共享文件,也包括其他任何文件。当你对一个文件实施Pin操作后,你将不能对之做任何修改。如果一个文件在Pin之后又被实施了Share操作,而被Pin的那个版本同时也是被共享的版本,则所有共享该文件的工程都不能更改该文件。如果一个文件先被实施了Share操作,而后在某个工程中被Pin了,则除了这个工程外的其余工程仍可以更改该文件(参见

4.4 其他操作(Other Use)4.4.1 扩展关键字(Expand Keywords)*4.4.2 使用Shadow目录(Work with Shadow Folders)*4.4.3 性能优化(Optimize Performance)*使用Shadow目录

 

  VSS可以将某些指定信息(例如:VSS内部版本号)直接插入文本文件中。用户只要将某些关键字放入文件的注释中,每次添加(Add)或签入(Check In)文件时,VSS都会自动查找这些关键字,并将相关信息置于其后。

  VSS中常用的关键字: 关键字 描述 $Archive: $ 文件在VSS中的路径名 $Author: $ 最近一次更改文件的用户 $Date: $ 最近一次签入的时间 $History: $ 文件的历史记录 $Revision: $ VSS内部版本号 $NoKeywords: $ 使VSS对其后的所有关键字不进行扩展

  例如:

  在某文件中加入如下一行:

  $Revision: $

  若当前该文件在VSS内部的版本号是22,则签入后VSS会将之修改为:

  $Revision: 23 $

 

  Shadow目录位于服务器端,包含了工程中所有的文件。这些文件既非位于VSS数据库中的master copy,亦非位于本地工作目录的local copy,而是最近一次签入的所有内容。Shadow目录应该由管理员来设置。

  是否使用Shadow目录功能是可选的,通常在如下两种情况下可以考虑使用该功能:

  • 为使某些用户能查看文件(但不能更改),这些用户可能没有对VSS的访问权限。
  • 不让你的本地工作目录保留可编译的软件副本。为使每个用户都能得到一个最新版本的软件,所有用户可能希望在某个目录下集中进行编译,而非在各自的工作目录下编译。在这种情况下,Shadow目录功能通常和添加(Add)、签入(Check In)之后的Remove Local Copy结合使用。

 

  Shadow目录不会跟踪子工程的变化,例如:你有一个被Shadow的工程$/A,包含两个子工程:$/A/1和$/A/2,而你又将$/A/2重命名为$/A/B,这种变化将不会被反映到Shadow目录中。你可以手工修改,或者利用Reconcile All功能,使之保持同步。

 

  有两种方法可以改善VSS的性能:尽可能多的将内容通过网络拷贝至本地来做;修改初始化文件对VSS的性能进行微调。

  具体优化措施:

  • 在SS.INI或SRCSAFE.INI文件中设置如下变量:

    Diff_Ignore (PC) = c-e-s-w-

    使VSS在进行文件比较时忽略end-of-line标记,从而加快运行效率

    CP_OnSelection = No

    在使用VSS Explorer时,缺省状态下,用户使用鼠标单击或使用键盘的方向键在工程列表上移动时,就会选中工程。设为No后,只有双击鼠标或按回车键才会选中。

  • 设置临时目录

    缺省情况下,VSS将临时文件存于服务器端,但管理员可以通过修改SS.INI中的Temp_Path变量,将临时路径设置在本地。

  • 让管理员在SRCSAFE.INI文件中将Lock_Mode变量设置为Native

    这是SRCSAFE.INI中该变量的缺省设置,把该变量设置为Native将使几乎所有的VSS操作都得到加速。该变量只能由管理员来设置。

  • 管理员通过Disable下面的功能,也可以一定程度地改善性能:
    • Shadow folders(参见
    • Journal files
    • Project security system(参见安全访问权限
    • Keyword expansion(参见扩展关键字

 

4.4.4 查找文件(Search for Files)4.4.5 设置密码(Set Passwords)4.4.6 编写批处理文件(Writing Batch Files)*4.4.7 定制SS.INI和SRCSAFE.INI文件(Customize the SS.INI and SRCSAFE.INI Files) 

  VSS Explore的list view缺省时只显示当前工程中的所有文件。通过使用Search命令,可以只显示符合指定要求的文件。例如:只显示.h文件,只现实被签出的文件。Search命令是允许递归的。

 

  如果VSS管理员指定域账号为VSS登录账号,则用户登录VSS时将不会提示输入密码。

 

  在编写批处理文件时,一些在命令行方式下使用的交互手段需要改变。

 

  • 屏蔽输入(Disable Input)

    如果你的批处理文件中包含了一系列VSS命令(它们可能需要整夜运行),你一定不希望程序执行期间会停下来提示用户输入信息。有3个命令行选项可以解决此类问题。

    缺省时,VSS在执行诸如添加(Add)、签入(Check In)等操作时会提示你输入注释(Comment),利用-c选项可以避免该类提示: 命令 描述 -c- 不添加注释 "-cHello" 使用Hello字串作为注释 -c@COMMENT.TXT 使用comment.txt文件的内容作为注释

    此外,VSS通常会要求用户回答yes或no,你可以使用-i选项避免此类问题: 命令 描述 -i-y 对所有此类提问自动回答Yes -i-n 对所有此类提问自动回答No -i 使用缺省回答

    VSS也可能会提示登录名,你可以使用-y选项提供足够多的信息。

  • 重定向输出

    缺省时,VSS将所有输出定向到屏幕,在命令行状态下你可以使用-o选项分页输出,而在批处理文件中你同样可以利用-o屏蔽输出或重定向输出。 命令 描述 -o- 屏蔽输出 -oRESULTS.TXT 重定向所有输出到文本文件results.txt中,如果该文件已存在,输出内容将追加到该文件末尾。

  • 使用命令行返回值

    在命令行状态下运行VSS时,VSS会设置一些返回值来标明运行状态。你可以在批处理文件中根据VSS的返回值采取相应措施。 返回值 描述 100 表明出错,例如:VSS无法找到数据库文件,或者你试图签出某个早已被签出的文件。 1 表明一个不是很严重的错误,将在如下三种情况下发生:
    当你使用ss Dir时,没有找到任何条目。
    当你使用ss Status时,至少有一项被签出。
    当你使用ss Diff时,至少有一个文件不一致。
    所有这些情况表明,即使本次操作是成功的,你执行的下一个VSS命令也可能操作失败。 0 VSS成功执行。

 

 

  VSS有两类初始化文件,它们包含了VSS的一些环境变量:SS.INI,每个用户都有一个这样的文件;SRCSAFE.INI,仅有一个,定义了VSS的一些全局变量,只有管理员才有权修改它。