1、 多人同时签出一个文件(Check Out Multiple Files)*
缺省状态下,一个文件只允许一个人签出,管理员可以通过修改配置,允许多人同时签出。此时,VSS将跟踪所有签出该文件的用户。每当用户签入时,VSS都将和当前存于数据库内的最新版本进行比较,若用户修改的是同一文件的不同处,VSS将进行简单的合并(Merge),否则提示用户,并且不允许签入。用户可以通过VSS提供的Visual Merge工具,比较存放于VSS数据库中的文件和本地文件的异同,手工修改本地文件,直到认为已经可以签入时,方才执行最终签入操作。(参见合并)
2、 合并(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工具。
在默认情况下(VSS 6.0)
VSS使用过程中要遵循的是lock-modify-unlock流程而不是 copy-modify-merge流程(比如CVS),即开发人员首先将自己要修改源代码和文档从VSS服务器主备份文件上checkout到本地同时 锁定服务器上的源代码和文档(multi - checkout情况除外),修改完成后checkout到服务器上同时解除服务器上文件的锁定。服务器集中控制所有的源程序和文档。
在VSS 2005中,创建数据库的时候可以选择是copy-modify-merge,还是copy-modify-merge。