I was looking for something like this when I first started working in a company that did not have version control (yikes). The development person at that time mostly looked at Microsoft stuff, and the only other person in the small development team with SCC experience was using SourceSafe only.
I had a lot of experience with SVN, so admittedly I'm pretty biased, but I really tried to make an assessment of SVN vs VSS vs TFS. I really could not find something positive in VSS, except for people who compared it to the fact that they did not use the control source at all.
Sourcesafe
Visual SourceSafe: Microsoft Source Destruction System
- From the article:
- SourceSafe does not have useful branching support [..] Merge support SourceSafe is tightly integrated with validation, making it difficult to examine the differences and validate the proposed merge before validating it on a tree. With such a weak level of support, it is easy to check for broken code in the version control system.
- When updating the local workspace in accordance with the server, files that were deleted on the server should be brought to your attention. (Or removed, because the old version can be obtained from the version control system.) Failure to do this means that your project uses outdated files, which often causes problems. [..] SourceSafe does not delete the obsolete file or does not give any warnings.
- SourceSafe's original design assumes that customers are trustworthy, always working correctly, and that nothing interferes with data exchange, causing corrupted data. As a result, SourceSafe is fragile and unreliable. I worked with SourceSafe in three different workstations. In each case, the SourceSafe database was corrupted. Data was damaged, work was lost, time was wasted on the problem.
Visual SourceSafe version control: unsafe at any speed?
- From the article:
- SourceSafe seems to work reasonably when you use a simple creation cycle, and then develop the source files, check the files in the given floors, mark the project, etc. However, many simple actions lead to software failure in various subtle (and sometimes unreasonable) ways. "The deleted file can be easily deleted from the database, preventing the rebuild of previous versions of the project. ''
- The user can reasonably expect the Destroy command to delete the current working version of the file from the user's hard drive. The user can also reasonably expect the Destroy command to delete the file from the current version of the project. The user may not expect the file to be deleted from all previous versions of the project.
CodingHorror: Source Control: Anything, but SourceSafe
- From the article:
- SourceSafe was an adequate version control system in the late 90s. Unfortunately, SourceSafe has never been updated architecturally to reflect modern version control methods. Even the latest version, SourceSafe 2005, absolutely smells in 1999.
- SourceSafe gives you the illusion of security and control, putting your project at risk.
- SourceSafe teaches developers bad habits: avoid branching, exclusive locks, simple persistent deletions.
http://www.wadhome.org/svn_vs_vss.html
From http://svn.haxx.se/users/archive-2006-11/0242.shtml :
- VSS uses file locking by default. If the user checks (blocks) the file, then leaves the company or goes on vacation for 2 weeks, the administrator must manually unlock the file if someone else needs to work on it, and when this other person returns, you have a merger in your hands. Merging is not very good from what I remember.
Short VSS vs SVN (taken from http://better-scm.berlios.de/comparison/comparison.html ):
- VSS is not atomic - if the network goes down, the power is turned off (on the server OR client), etc., the repository is damaged. SVN is atomic, or all changes fall, or none of them performs
- VSS blocks files - several people cannot work in one file at a time.
- VSS changes are file dependent. SVN can commit changes to multiple files as a single “set of changes."
- VSS does not track line changes. With SVN, you can see who last changed the line and in which revision ("blame svn")
Subversion
A very simple source code management system. Changes tracks, uses the update-merge-commit model, which allows several developers to work on the same file at the same time, and subversion automatically merges its changes (when possible). No “magic” happens.
Integration with Windows / Explorer through TortoiseSVN . Integration with Visual Studio through VisualSVN ($ 50 / developer) is really just a TortoiseSVN interface.
Integrates with many third-party tools, for example:
Svn Cons:
- There is no built-in merge tracking (tracking what changes have been merged, for example, from development to a stable branch)
- Maybe with svnmerge / svnmergegui
- SVN 1.5 has built-in merge tracking
- Missing shelf function
- Allows someone to work on something and “put it off” in the repository (without making it part of the project), where other developers can pick it up.
- TFS has this
- It can approximate this function using patches or by creating a separate branch.
Team Foundation Server (Visual Studio Team System Team)
Uses the SQL server as a backend (therefore, it is reliable). It has a built-in toolkit for error tracking, project planning, continuous integration.
- Retail prices :
- $ 469.98 for publication in a working group (5 user restrictions)
- $ 2,499.98 for the full version
Licensing may be more complex than this: License document
- It seems CAL (Client Access License) is required for each user of a system that directly accesses TFS. For example, even for a technical support person to directly report an error, this user will require a CAL.
- Visual Studio Team Edition comes with CAL, but individually they are ~ 500 US dollars (according to what I saw on the forums).
- This may be a change in TFS 2008
Migrating from VSS to TFS: http://manicprogrammer.com/cs/files/folders/st_jean/entry1118.aspx
Performance Issues: http://www.cornetdesign.com/2007/05/vststfs-performance.html
- http://weblogs.asp.net/rosherove/archive/2007/04/29/tfs-or-not-being-a-perfectionist-is-a-realistic-world.aspx
- http://jeremydmiller.blogspot.com/2005/07/impressions-from-vsts-talk-last-night.html
- From the article:
- VSTS is clearly aimed at very large companies using painstaking, high ceremony processes - everything that is not my employer. I think process automation is great, but if your process is so complex that no one can know everything, I think you have serious problems.
- One part of the presentation, in which I thought Menegay left his rocker completely, was that VSTS became a workflow-oriented tool to tell everyone (especially developers) what exactly they should do. As a project recording tracking tool, I find VSTS great. Using something like VSTS as your main communication channel is absurd. Turning developers into mindless zombies doing exactly what the VSTS workflow tells them to make sounds as a recipe for disaster for me. Not to mention the cool developer care.
- http://codebetter.com/blogs/eric.wise/archive/2007/05/31/bye-bye-team-foundation-server.aspx
- From the article:
- I really tried to instruct the core server to shake. My opinion on this subject is as follows: 1. This is usually a better source control system than a source safe one. 2. It is really expensive. 3. It is a pain in the ass to control. 4. It is a pain in the ass to troubleshoot.
- By the sounds of this, merge / branch support is not as good as subversion because they tried to keep it “familiar” to sourceafe users. This is a pure joke.
My super-quick summary:
- VSS sucks
- TFS seems very useful / capable, but quite expensive as soon as your team grows to 5 people.
- SVN is useful and well tested and has no cost
What has become possible for us is that the possible benefits of TFS were not worth the huge additional cost.
What is it worth, now a couple of years since I wrote it. The guy who was previously responsible no longer works with the company, I am now a development manager, and our team is 3 times bigger. We use a combination of SVN, VisualSVN + TortoiseSVN and Trac. I do not think that any of the developers could no longer use these tools. Everyone managed to build SVN very quickly, perhaps with the exception of merging branches, which some of them are still not sure about doing on their own.
Jeff Atwood (creator of stackoverflow) discusses SVN a bit in one of his Joel podcasts: http://blog.stackoverflow.com/2008/06/podcast-10/