SVN vs VSS vs CVS Comparing HELP

Neoryder picture Neoryder · Jul 9, 2009 · Viewed 11.5k times · Source

We are currently determining if we would move CVS and VSS projects to a single SVN server.

I've been using SVN for a long time now but is forced to use CVS and VSS for work stuff.

Would you please help me give reasons why moving to SVN would be better than buying a VSS 2005? And also what the benefits of moving from CVS to SVN would be?

We have projects in C#.NET/Java/Perl/Visual Basic.

Beyond the cost difference what more can i say to the bosses to convince them to move to svn.

And is there a way to preserve the histories of the VSS and CVS when moving to SVN?

Answer

Hector Sosa Jr picture Hector Sosa Jr · Jul 9, 2009

This is one of those questions that requires a lot of details, but it will boil down to "Why do you like using SVN?" and what you can use from the "like" list to present to your boss.

I've used all three. I can only speak for my own experiences and bias. My usage history is VSS --> CVS --> SVN

CVS

Pros:

  • It can be used across the internet
  • Very stable

Cons:

  • It is very hard to rename things. This causes a lot of pain.

My main beef with it was client software. I found all of the client software incoherent and disjointed. I absolutely hated using it.

VSS

Pros:

  • Sharing projects is dead easy.
  • Integrates well with Microsoft IDEs

Cons:

  • It uses the Microsoft Jet storage engine, which is prone to corrupt whatever it is accessing.
  • It can't be used outside of your LAN, unless you buy something like SourceOffsite.
  • The checkout-lock files and checkin-unlock files can slow down productivity in larger groups. A lot of newbie developers leave files checked out, and the rest of the team has to wait on them to make any check in.
  • Microsoft does not develop this anymore. Microsoft doesn't even use this internally for their cash cow apps like Office and Windows. They actually use a custom version of Perforce.

Subversion

Pros:

  • Checkout-edit-merge file editing cycle is very team friendly
  • Creating branches is very cheap and doesn't copy physical files
  • It's being continually developed
  • There are several Subversion packages to choose from
  • A lot of third party vendors integrate with Subversion. It has a rich application ecology.
  • One major advantage is that you can now integrate security Subversion with your Active Directory tree.

Cons:

  • Merging conflicting can still be a major pain in the neck, but this is the same as with most other version control systems.
  • Security can be a bit tricky to use depending on which server (svnserve.exe or Apache/WebDAV) you choose to run your repositories.

I'm guessing that since your bosses want to buy VSS2005, that this will be running on Windows. My recommendation is that you stick with one of these 3 Subversion distros/packages

General Subversion installation package: CollabNet Subersion - http://www.open.collab.net/downloads/subversion/ This will install both svnserver.exe (custom server) and Apache/WebDAV or you can choose which one to install during setup. You'll be able to serve your repositories using both http:// and svn:// protocols.

Subversion plus Administration console: VisualSVN Server - http://visualsvn.com/server/ They do their own Subversion distribution. This package has a Microsoft Management Console (MMC) snapin to manage the server. This one will help you setup permission against you Active Directory tree. This is mainly geared towards http:// protocol.

Subversion Administration console: PainlessSVN - http://www.painlesssvn.com This one will only work with svnserve.exe (custom server). It's a Microsoft Management Console (MMC) snapin that will manage the settings, and users. This is mainly geared towards the svn:// protocol.

Tom Ritter gave some very good links to tools that will import history and code from CVS/VSS to Subversion.