Menasoft Menasoft Menasoft Menasoft Menasoft
Menasoft
Menasoft

April 14, 2006

Version Control Systems – Subversion, CVS, SourceSafe

I do Windows C++ development for the most part and typically use Visual Studio. I also have a minor fascination with version control systems. They are the backbone of any software development team. I’ve often found they really don’t get the attention they deserve, given their importance. I find that a little time wasted here and a little disorganization there really adds up to a lot in the scope of almost any project.

I’ve done a review of a several version control systems trying to find the best one for my needs.
My comments mostly apply to large multiple engineer projects, that have potentially many source and object modules.

NOTE: This document is not complete. I’ll try to keep filling it in as i progress.
Use the ‘more’ link below to get the rest of this!

INTRO:

To begin, Microsoft produced a really great system (for its time) called SourceSafe once upon a time. It was simple and GUI driven and best of all integrated into the IDE. It was leaps and bounds better than the other systems I had tried at the time. They then totally abandoned it for several years. Apparently assuming it was good enough. But it had bugs, was prone to database corruption and didn’t work at all with the internet. The dirty little secret is that Microsoft internally didn’t consider it to be good enough to use themselves. Many 3rd parties have added functionality to SS to try to fix these issues but none really took the clear lead. Recently Microsoft has come up with Team System and Visual Source Safe 2005 with the new Visual Studio 2005 product.

File locking vs. File merging
Its important to understand the difference in the approaches taken by the major players

The main approach taken by SourceSafe was to lock files when you are modifying them. If someone was working on a file, you could immediately see this. The file was locked for you until released by whomever had it locked. You could get around this of course by just working offline and merging later, but ‘officially’ this was discouraged. You have to ask permission from the person locking the file before you can proceed.

The approach taken by CVS is to allow multiple people to modify the same files then merge them when they want to check into the repository. So when you commit your changes or update from the repository you can be greeted with a notice that there are conflicts that need to be resolved.

More recent versions of CVS, can optionally do locking/unlocking of files for edit. It uses the term Edit and Unedit but it is essentially the same thing. The TortoiseCVS plugin supports this feature very nicely.

Subversion can do either locking or merging. By default Subversion seems to favor the CVS approach, but it does support locking of files for those who like the SourceSafe way.

Here is a good breakdown of some of the features supported/unsupported for several version control systems:
http://better-scm.berlios.de/comparison/comparison.html
Broken down by catagories:
* Repository Operations
o Atomic Commits
o Files and Directories Moves or Renames
o File and Directories Copies
o Remote Repository Replication
o Propagating Changes to Parent Repositories
o Repository Permissions
o Changesets’ Support
o Tracking Line-wise File History
* Features
o Ability to Work only on One Directory of the Repository
o Tracking Uncommited Changes
o Per-File Commit Messages
* Technical Status
o Documentation
o Ease of Deployment
o Command Set
o Networking Support
o Portability
* User Interfaces
o Web Interface
o Availability of Graphical User-Interfaces.
* License

Conclusion:

Most all version control systems actually support the same base features. They all do histories, differencing, labeling, locking, branching, auto merging. It is more a matter of how clean, fast and simplistic they make the process. Though as outlined above there are some subtle but very important differences.

The current favorite is Subversion, Ankh, and Tortoise SVN in combination.

PROS:
File Locking for optional SourceSafe or CVS style.
Simpler and faster than CVS
Open source and free (as opposed to SourceSafe)
CONS:
Poor support for Windows Services. Though this is partly corrected via SVNService.zip which can be found at (http://dark.clansoft.dk/~mbn/svnservice/) or the new installer
Lack of a GUI editor for managing users and folder permissions.

Links:
Subversion main site.
One click Windows installation
TortoiseSVN for Subversion

Blogs:
http://blog.briankohrs.com/2005/09/06/less-than-mere-moments-installation-of-subversion/
http://excastle.com/blog/archive/2005/09/07/2113.aspx – Jo Whites blog on this subject

Filed under: Research — admin @ 11:51 am

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Time limit is exhausted. Please reload CAPTCHA.

Menasoft