vss
vss是微软公司推出的版本控制系统,全称Microsoft Visual SourceSafe,主要用于小型软件开发项目的源代码与文档管理[1]。它把文件存放在共享数据库里,记录每次改动,开发者可以检出、修改、签入,并随时取回历史版本[2]。该产品早期与Visual Studio捆绑发布,2010年后微软不再随新版开发工具分发,其定位由Team Foundation Server等工具接替。
定义
vss指微软公司出品的版本控制系统Microsoft Visual SourceSafe,简称VSS,面向前台规模较小的软件开发项目[1]。它在数据库中为文件建立可追溯的版本库,除源代码外也能存放各类文件。其基本功能是保存数据库和项目的历史,使用户能查看历史并从库中取回任意版本[2]。
作为配置管理工具,VSS以项目为单位组织文件,项目结构类似磁盘上的文件夹树,可在同一层级中容纳任意数量的项目和子项目[3]。它支持文本与二进制文件,但对两类文件的处理方式并不相同。
原理
VSS延续了版本控制中的检出—修改—签入流程:开发者先从库中检出文件,修改完成后再签入,库中因此保留完整的历史链[4]。数据库建立时可选择锁定的工作模式,也可选择允许并行修改、冲突时再合并的模式[4]。
在存储上,VSS采用反向增量(reverse delta)方式:只有最新版本以完整形式保存,其余版本仅记录与前一版本之间的差异,这样既能保留全部版本,又占用较少的磁盘空间[2]。取回较早版本时,系统需按差异逐级还原,版本链越长耗时越多[2]。
版本标识有3种方式:系统自动分配且只增不减的内部版本号、按修改或签入时间生成的时间戳,以及用户自行定义、最长31个字符的标签[2]。此外还有钉住(pin)机制,可把某文件的特定版本固定在项目中,共享文件被钉住后便无法继续修改[2]。
早期版本的VSS并不采用客户端—服务器架构,而是让客户端通过共享目录直接读写数据库文件,权限依赖数据库所在分区的NTFS权限与Windows共享权限,由管理员程序按项目分配读取、签出签入等访问级别。从VSS 2005起加入了客户端—服务器模式,客户端不再需要对共享目录的写权限,文件须经VSS客户端工具访问。
发展历程
SourceSafe最初由美国北卡罗来纳州的一家公司One Tree Software开发,其1.x至2.x系列曾支持DOS、OS/2、Windows、Windows NT、Mac与Unix等多种平台。1994年微软收购One Tree Software,随即停止除Windows以外各版本的开发,并将产品冠以Visual SourceSafe之名;16位的3.1版短暂发行后,4.0版于1995年推出。
此后微软陆续发布5.0版(1996年)、6.0版(1998年)和6.0c版(2001年)。6.0版是长期被使用的版本,也是很多团队接触版本控制时的入门工具。
2005年11月,VSS 2005发布,加入了对Unicode与XML的更好支持、通过HTTP远程签出以及更高的稳定性,并随Visual Studio 2005 Team System部分版本提供。同期微软推出Team Foundation Server,用以解决VSS在大型团队与高稳定性要求下的不足。至Visual Studio 2010,微软不再分发Visual SourceSafe,并为小型团队提供Team Foundation Server Basic作为替代。
值得注意的是,微软内部很少使用这款自家产品:1999年之前其内部使用自行开发的RCS变体SLM,此后改用基于Perforce的SourceDepot[1]。
应用
VSS的典型用途是管理软件开发中的源代码和相关文档,包括文本、图像、声音、视频等各类文件,使团队成员能取用最新版本并回看历史改动。它与Visual Studio高度集成,开发者可在集成开发环境中直接完成签入、签出、查看历史等操作[1]。
由于数据库以共享文件夹形式存放、客户端直接访问文件,VSS适合人数较少、地理集中、通过高速局域网连接的团队,官方建议的团队规模为20人或更少,数据库容量约4GB以内。2005版增加HTTP访问后,远程用户也可在有限条件下使用。
为弥补跨平台与远程访问的短板,第三方厂商推出过配合VSS的远程访问工具,微软亦曾推荐此类方案[1]。当团队转向Team Foundation Server时,微软提供了图形化升级向导和命令行迁移工具,用于把VSS项目及其历史迁入新的版本控制环境。
局限
VSS最常被提到的问题是稳定性。由于客户端直接操作库中的文件,若某台机器在写入过程中崩溃,可能造成文件损坏,数据库本身也可能出现损坏,用户需借助自带的检查修复工具排查。共享目录方式还意味着任何能访问该目录的人都可能绕过工具改动数据[5]。
VSS缺少对多个文件原子提交的支持,一次涉及多文件的签入若中途失败,无法整体回滚,这在其他版本控制系统中已属基本能力。基于文件系统的存储方式使每次版本变更都伴随大量磁盘读写,在并发用户较多时性能明显下降[1]。
平台与网络方面,旧版VSS只能在Windows上运行,不支持异构环境的配置管理,也不适合通过互联网连接使用[6]。较新版本之前对大量二进制数据(如图像、可执行文件)的存储也不够稳定。
在功能层面,VSS提供版本跟踪、标签、分支、共享与合并,但不具备变更流程控制等更完整的配置管理能力,文件锁定机制也使人员较多时容易互相等待[6]。对二进制文件,它只能判断是否变化而无法展示具体差异,也不能执行二进制文件的合并与多重签出。
参见
-
版本控制 —— VSS所属的工具类别及其基本概念。
-
Visual Studio —— 与VSS长期集成发布的微软开发环境。
-
Team Foundation Server —— 微软用以接替VSS的版本控制与项目管理产品。
-
Subversion —— 同期的集中式版本控制系统。
-
Git —— 后来广泛使用的分布式版本控制系统。
-
Perforce —— 微软内部SourceDepot所基于的商业版本控制系统。
参考资料
- Visual SourceSafe [引用日期2026-10-29]
- Version Control - 跳至主要内容 跳到 Ask Learn 聊天体验 [引用日期2026-10-29]
- DOCUMENT:Q124530 11-DEC-2001 [ssafe] [引用日期2026-10-29]
- simple-usage-and-description-about-visual-source-safe [引用日期2026-10-29]
- Visual_Source_Safe [引用日期2026-10-29]
- 版本控制系统小调查 [引用日期2026-10-29]