At this page you can find a comparison table "CVS vs. SourceSafe". It is our vision, and of course you can consider it biased. Maybe it is really biased. We really like CVS. But we came to it not so long ago, and before we managed to create our SCC plug-in we used to work with SourceSafe.
Moreover, our main business is offshore software development. And first of all we should take our business goals into account. We choose CVS for our work and are satisfied with it, it fully meets our requirements (remote access to repository, branches, notification, bug tracking integration reliability and price). We are a small group, and that is why the first reason to select CVS was its price (almost zero). But now we consider that CVS satisfies all requirements to a Source Control system. And our SCC plug-in provides means for convenient work from IDE. So, why should you pay more?
||Access to repository
||CVS is really a client-server platform. It can be accessed remotely via VPN, LAN or public Internet. There exist several protocols: secure/not secure, with compression or without. Servers are available both for UNIX and for WINDOWS.
||VSS is not a client-server platform. It is a client-filesystem platform. Inside LAN one can use file sharing to access repository, but that is impossible for low-bandwidth connections because of large network traffic intensity. Source-off-site is a specific tool that can solve this problem, its price is 200$ for a single license.
||Repository structure is similar to the file structure stored by the repository. All files have the same names as in the file system with added .v extension. Each file contains full version of latest content with overhead RCS information. It is very easy to find and fix arising problems. Format of repository does not depend on access method (server or local). Thus, repository initially created as local can be easily upgraded to a server.
||Format and repository structure is not human readable or understandable. Files inside it have strange names like: abaaaaa.aaa and so on. Any small error or damage (by virus for example) can destroy the repository completely.
||CVS stores line diffs information for each revision. This means that adding of one line to file, adds only several lines to repository (including overhead information)
||The "Alin Constantin <email@example.com>" claims that VSS also stores diffs inside repository, even for binary files. However anyway total repository size is increasing in geometric progression. To check this just convert with vss2cvs tool source safe repository. It will be 1.5 - 3 times smaller with preserved history.
||Really true support for branches is provided, with ability to merge branches. It is very important to maintain release and development branches.
||No true support for branches is provided, except for the server share support when one file can exist in several projects.
||CVS is a Concurrent Versioning System. No server side support for reserved checkouts is provided. But reserved editing is possible with the client side support (not strict).
||CVS allows to set up integration with e-mail notification for code changes.
||With 3-rd party tools
||Access via WEB
||Several tools exist for accessing the source via web.
||Integration with issue/bug tracking tools
||CVS is standard de-facto for many IDE's by default. I.e. their built-in integration is provided. For IDE's integrated only with SCC API our plug-in provides the same functionality as VSS. Thus, CVS with our plug-in covers 90% of available IDE's.
||Only IDE's integrated with SCC API are supported.
||In addition to our plug-in, CVS has a wide range of GUI clients. Most of them are free and very powerful.
||VSS has its own VSS explorer with rather convenient UI for managing VSS repositories. No other management tools are available.
||CVS is an old system used by many developers. It works excellently. Only note that its development is still continued, and do not use alpha or beta versions. Use only "stable" releases.
||It is a Microsoft tool, however critical repository corruption is possible.